tomcat添加https访问支持

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

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

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

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

一、为服务器生成证书

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

“tomcat”是别名

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

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


二、为客户端生成证书
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文件

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文件导入到服务器的证书库

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、检查安装结果

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

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



四、让客户端信任服务器证书
1、把服务器证书导出为CER文件
keytool -keystore /Users/medchitectec/Desktop/cer/tomcat.keystore -export -alias tomcat -file /Users/medchitectec/Desktop/cer/tomcat.cer

五、配置Tomcat服务器
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"  
           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中:

     <Connector port="8090" protocol="HTTP/1.1" 
               connectionTimeout="2000000" 
               redirectPort="8443" 
			   />
			   
	<Connector port="8091" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
	   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的接口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值