1.cmd定位到jdk的bin目录,执行以下语句:
keytool -genkey -alias tomcat -keyalg RSA -validity 365
按照要求一步步输入信息,密码使用changeit,最后一步让你输入密钥的时候,直接回车。
具体记录如下:
D:\Program Files\Java\jdk1.7.0_79\bin>keytool -genkey -alias tomcat -keyalg RSA -validity 365
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: sdlvyue
您的组织单位名称是什么?
[Unknown]: db
您的组织名称是什么?
[Unknown]: db
您所在的城市或区域名称是什么?
[Unknown]: tj
您所在的省/市/自治区名称是什么?
[Unknown]: tj
该单位的双字母国家/地区代码是什么?
[Unknown]: zh
CN=sdlvyue, OU=db, O=db, L=tj, ST=tj, C=zh是否正确?
[否]: y
输入 <tomcat> 的密钥口令
(如果和密钥库口令相同, 按回车):
这里要直接按回车。
完毕后会在c盘用户根目录下产生一个:.keystore文件,将它拷贝到tomcat的bin目录下。
2.cmd定位到tomcat的bin目录,按照下面执行
D:\Tomcat7\bin>keytool -selfcert -alias tomcat -keystore .keystore -validity 365
输入密钥库口令:(此处为上面生成证书时输入的changeit)
D:\Tomcat7\bin>keytool -export -alias tomcat -keystore .keystore -storepass changeit -rfc -file tomcat.cer -validity 365
存储在文件 <tomcat.cer> 中的证书
此时会在D:\Tomcat7\bin>下生成tomcat.cer证书文件。
3.配置tomcat(开发环境需注意server locations配置)
打开conf/server.xml,找到“SSL HTTP/1.1 Connector” 那一块,取消注释并将它改成:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="bin/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
4.设置强制以https访问(开发环境需注意server locations配置)
打开conf/web.xml,在</welcome-file-list>标签后加上
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
5.去掉端口号
端口改成80,redirectPort改成443
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
端口改成443
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="bin/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />