C:\Program Files\Java\jdk1.8.0_131\bin>keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\keys\tomcat.keystore -validity 36500
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: weixin.xxx.com
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,500 天):
CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储D:\keys\tomcat.keystore]
找到tomcat目录下的conf/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorefile="D:/keys/tomcat.keystore" keystorepass="1234567" />
尝试启动tomcat,报错:
Failed to load keystore type JKS with path C:\Users\36400/.keystore due to C:\Users\36400\.keystore (系统找不到指定的文件。)
java.io.FileNotFoundException: C:\Users\36400\.keystore (系统找不到指定的文件。)
解决:
keytool -genkey -alias tomcat -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: weixin.xxx.com
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]:
CN=weixin.xxx.com, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
[否]: y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次重启tomcat,访问https://127.0.0.1:8443/
这样还没有结束,除了https://127.0.0.1:8443/可以打开tomcat主页面外,http://127.0.0.1:8080/ 也可以打开。
这需要将访问8080端口的请求强制跳转到8443端口,打开tomcat目录下conf/web.xml,在倒数第二行添加:
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
重启tomcat,发现http的请求会自动转换成https。