tomcat添加https访问支持

最近研究了下https,https需要相关证书;可以利用jdk自带的工具自己生成证书,也可以向专门机构申请证书。

区别好像就是用浏览器访问https的网站时,自己生成的证书不会被浏览器信任,在浏览器左上角地址栏“https://”有个红色的斜杠;专门机构申请的证书没有。我暂时还没发现其它的区别。

2017年后苹果强制使用https,这时证书需要到专门机构(如startssl、沃通CA等)上申请,不能自己生成,因为自己生成的证书不会被苹果信任。

下面看下如何自己生成证书。

一、为服务器生成证书

[html] view plain copy

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /Users/medchitectec/Desktop/cer/tomcat.keystore -validity 36500  

“tomcat”是别名

“/Users/medchitectec/Desktop/cer/tomcat.keystore ”是生成的证书的存放路径

"36500"是证书的有效期,单位是”天“

二、为客户端生成证书

[html] view plain copy

keytool -genkey -v -alias tomcat -keyalg RSA -storetype PKCS12 -keystore /Users/medchitectec/Desktop/cer/client.key.p12 -validity 36500  

“tomcat”是别名,最好和服务端证书一样

“/Users/medchitectec/Desktop/cer/client.key.p12 ”是生成的证书的存放路径

"36500"是证书的有效期,单位是”天“

三、让服务器信任客户端证书

1、将客户端证书导出为CER文件

[html] view plain copy

keytool -export -alias tomcat -keystore /Users/medchitectec/Desktop/cer/client.key.p12 -storetype PKCS12 -storepass 88888 -rfc -file /Users/medchitectec/Desktop/cer/client.key.cer  

tomcat”是别名

“/Users/medchitectec/Desktop/cer/client.key.p12 ”是客户端证书的存放路径

”88888“是客户端证书密码(生成证书时会提示输入)

“/Users/medchitectec/Desktop/cer/client.key.cer ”是生成的 cer文件的存放路径

2、将CER文件导入到服务器的证书库

[html] view plain copy

keytool -import -v -file /Users/medchitectec/Desktop/cer/client.key.cer -keystore /Users/medchitectec/Desktop/cer/tomcat.keystore  

“/Users/medchitectec/Desktop/cer/client.key.cer ”上面一步生成的cer文件的存放路径

“ /Users/medchitectec/Desktop/cer/tomcat.keystore ”服务器证书的存放路径

3、检查安装结果

[html] view plain copy

keytool -list -keystore /Users/medchitectec/Desktop/cer/tomcat.keystore  

“ /Users/medchitectec/Desktop/cer/tomcat.keystore ”服务器证书的存放路径

四、让客户端信任服务器证书

1、把服务器证书导出为CER文件

[html] view plain copy

keytool -keystore /Users/medchitectec/Desktop/cer/tomcat.keystore -export -alias tomcat -file /Users/medchitectec/Desktop/cer/tomcat.cer  

五、配置Tomcat服务器

[html] view plain copy

maxThreads="150" scheme="https" secure="true"    

clientAuth="false" sslProtocol="TLS"    

keystoreFile="D:\\tomcat.keystore" keystorePass="888888"    

truststoreFile="D:\\tomcat.keystore" truststorePass="888888" />    

clientAuth="false"表示浏览器客户端不需要“客户端证书”,可以直接访问

clientAuth="true"表示访问必须要客户端证书,在浏览器中安装上面步骤生成的“客户端证书”即可

六、tomcat同时支持http和https

上线APP还需要支持老版本,老版本是http接口,那么这个时候需要同时支持http和https,配置如下

在server.xml中:

[html] view plain copy


connectionTimeout="2000000"   

redirectPort="8443"   

/>  


maxThreads="15000" scheme="https" secure="true"  

clientAuth="false" sslProtocol="TLS"   

keystoreFile="D:\\tomcat.keystor" keystorePass="888888"    

truststoreFile="D:\\tomcat.keystor" truststorePass="888888"/>  

这样“8090”是http的端口,“8091”是https的接口

你可能感兴趣的:(tomcat添加https访问支持)