1、 执行命令keytool -v -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat.keystore,
生成秘钥文件tomcat.keystore;
参数简要说明:/usr/local/tomcat.keystore含义是证书文件保存地址,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天
在命令行回车后需要填写必要的参数:
A、输入keystore密码:此处需要输入大于6个字符的字符串
B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址,最好是域名
C、 “你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国 家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
D、输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以
完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件
2、编辑tomcat/conf/server.xml
找到对应的connector,取消注释,并且写入keystore文件路径和密码
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat.keystore"
keystorePass="123456"/>
3、强制HTTP转HTTPS 对工程的web.xml进行修改,在</welcome-file-list>后加入一下代码:
<security-constraint>
<web-resource-collection>
<web-resource-name>OPENSSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
作用是不管前缀是http还是https都自动转为htpps.
4、重启tomcat,在网站输入http://域名:8080/项目名/网址或者https://域名:8443/项目名/网址测试是否能够访问网站。
http默认端口80,但是我们Server.xml配置的是8080端口,所以需要填写端口,https默认端口443,我们配置的是8443端口。
5、有的情况下访问网站不能输入端口,此时则需要修改server.xml文件,
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
为
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />,
修改
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat.keystore"
keystorePass="123456"/>
为
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat.keystore"
keystorePass="123456"/>,
还要修改
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
为
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />,
此时重启tomcat,再次输入http://域名/项目名/网址或者https://域名/项目名/网址测试是否能够访问网站。
6、如果不能访问,查看server.xml和web.xml文件是否修改正确,查看防火墙是否关闭。
仍然不能访问则查看错误信息。
如果显示80和443不能访问等问题,测试8080和8443是否可以访问网站,如果可以,此时可以通过端口转发的方式解决问题。
执行iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT - to-port 8080,访问80端口时转发到8080端口,443端口同理,想要删除该命令,则将-A改为-D再执行一次。
7、通过浏览器可以正常访问网站,但是此时的安全证书是我们自己生成的,并没有通过专业检测,在很多平台依然受到限制,譬如使用微信小程序访问后台接口,要求必须为https请求,且无法输入端口,并且还要求有SSL证书,否则无法通过检测。
此时可以在微信开发者工具中,点击详情-本地设置-不校验,如下图:
14217092-32144044db471210.png
此时在开发者工具中测试可以通过,但是发布之后,体验版、测试版、开发板均无法使用,只能用来测试接口返回数据是否正确的临时手段,最后想要上线依然需要SSL证书。
8、申请SSL证书,有免费的,试用期1年,和收费的,阿里云和腾讯云都行,参考网站https://yq.aliyun.com/articles/637307,证书需要跟域名一致,需要审核,24小时内就会通过。然后参照网站https://blog.csdn.net/zhou_hao_yan/article/details/81582611,下载并且安装到我们的服务器tomcat中。
9、再次在微信小程序中测试,则通过。
网友评论