https://blog.csdn.net/tanga842428/article/details/79273226
Http站点转Https站点教程
原文地址:http://blog.csdn.net/qq_19558705/article/details/60756689
http站点转https站点的教程网上有很多,这里我先谈谈自己遇到的坑。
首先我用的是阿里云服务器。站点是http,最近在接触微信小程序wx.request接口时,发现站点必须是https。求学心切,立马踏上了不归之路。
网上看到的第一篇博客:http://blog.chinaunix.net/uid-28559065-id-3489955.html 按照文章内容,成功的生成了证书,可文章中并没有介绍如何使用该证书 .
在网上再找了一篇博客: http://blog.csdn.net/gane_cheng/article/details/53001846 在文章后面介绍如何使用证书,同时也介绍到自己生成的证书存在的问题:
1. 网站上有危险标识,
2.部分非https的javascript不能加载,
3.移动端打开空白页面。
证书,我选择的是阿里云盾的证书(https://www.aliyun.com/product/cas),突入眼帘的是4000RMB。不要被价格吓到,专业版OV SSL 旁边有一个 免费型DV SSL可供选择。
购买后补全信息的流程,网上是有教程的(http://www.chinaz.com/web/2017/0105/639110.shtml 此篇博客的第七点,我没有用上)
补全信息的过程中主要有三点需要注意 :
1.请选择 文件认证,
2.请选择CSR自动生成 ,
3.信息补全后一定要按照要求把验证文件上传到服务器。
大概一天时间内,证书状态会从“审核中”更新为“已签发”。 操作中选择下载,并根据提示完成操作。
我选择的是tomcat,在操作的过程中,JKS证书按照这步没有做。
需要注意的是:文档中很明确的提示“不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改” (我就是全部copy的,导致后面一直访问不通)。
一切配好后,感觉是不是要over了。错!这才是恶梦的开始。
首先是端口问题,访问是需要添加8443的端口。正常的域名是不建议添加端口,而且微信小程序api文档中也明确要求不能带端口。
查阅相关文档后发现https默认端口是443,tomcat为了区分才改成8443。知道这点后便很好解决。在server.xml中修改端口后便正常了。(http默认端口是80)
本以为万事大吉,却发现从百度搜索关键字,点击后不能正常显示页面,而是空白页面(心瞬间凉了一截)。网上找了一篇关于 http 跳转 https的博客,完美解决问题。http://blog.csdn.net/bao19901210/article/details/8768362
在原来的基础上主要修改了 redirectPort 改为443 ; keystoreFile 和 keystorePass就填自己的 port为443;
- <Connector port="80" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="443" URIEncoding="UTF-8"
- compression="on"
- compressionMinSize="2048"
- noCompressionUserAgents="gozilla,traviata"
- compressableMimeType="text/html,text/xml,text/css,application/javascript,text/plain" />
- <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
- maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
- clientAuth="false" sslProtocol="TLS"
- keystoreFile=".pfx"
- keystoreType="PKCS12"
- keystorePass="" />
- <!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
以上便是全部内容,可能我对这块比较薄弱,感觉很吃力吧。此博客仅供学习,造成的任何损失概不负责。