前言
在进行微信小程序开发时,发现它需要https协议的域名,而自己的tomcat的域名却是http协议。企图通过修改协议达到匹配的目的,可最终发现它对ip地址也有限制,不能是localhost的,但是这个修改也是值得记录下来分享的。
1. 生成密钥: 进入jdk的bin目录后输入:
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "g:\tomcat.keystore" -validity 36500
参数简要说明:“g:\tomcat.keystore”含义是将证书文件保存在g盘,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天。
[1] 输入keystore密码:此处需要输入大于6个字符的字符串
[2] “您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址
[3] “你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国 家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息
[4] 输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以
完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件
这时我们发现在g盘下生成了tomcat.keystore文件
2.对tomcat的配置文件server.xml进行相关配置
tomcat安装目录下 conf/web.xml文件
[1] 把端口改为443(https的默认端口)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
修改成
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" URIEncoding="UTF-8"/>
[2] 开启相应的https协议
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"/>
-->
去掉注释且修改参数=>
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="G:/tomcat.keystore"
keystorePass="tomcat" />
解析:
keystoreFile=“G:/tomcat.keystore” 这里为我们密钥(即证书文件)所生成的位置
keystorePass=“tomcat” 这时我们在设置的主密码
[3] 把8443端口改为443
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改成
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />
启动tomcat,访问地址: https://localhost 或 http://localhost:8080/ 都能访问成功
此文章有一定程度借鉴了https://www.cnblogs.com/james-roger/p/8906287.html,不过操作都是自己完成的。