首页 > 应用开发 > Java > tomcat8配置https协议访问
一、背景介绍
由于当前系统网站采用的是http协议访问,这种协议 通信使用明文、请求和响应不会对通信方进行确认、无法保护数据的完整性,很容易被攻击者 篡改网站,为了 防止网站被黑被篡改,因此需要对当前http协议改造成https协议,保障网站的安全和客户利益不受损。
二、改造方案

三、 生成https证书
3.1 服务端生成证书
使用keytool工具为Tomcat生成证书,keystore文件想要存放在“/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore”,口令“123456”。
keytool -genkey -v -alias jaytom -keyalg RSA -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -validity 36500
keytool -importkeystore -srckeystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -destkeystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -deststoretype pkcs12
参数说明:
-keystore:生成证书:/opt/apache-tomcat-8.5.46/keystore/为证书路径,证书文件名:jaytom.keystore
-validity 36500:表示证书有效期100年
-alias:证书名称:"jaytom"

3.2 客户端生成证书
为客户端浏览器生成证书,便于服务器来验证它。为了能将证书顺利导入至浏览器,证书格式应该是PKCS12。
keytool -genkey -v -alias jayclient -keyalg RSA -storetype PKCS12 -keystore /opt/apache-tomcat-8.5.46/tlskey/jayclient.p12 -validity 36500
参数说明:
-keystore:生成证书:/opt/apache-tomcat-8.5.46/tlskey/为证书路径,证书文件名:jayclient.p12
-alias:证书名称:"jayclient "

3.3
配置服务端信任客户端证书
由于是双向SSL认证,服务器必须要建立信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件。
keytool -export -alias jayclient -keystore /opt/apache-tomcat-8.5.46/tlskey/jayclient.p12 -storetype PKCS12 -storepass 123456 -rfc -file /opt/apache-tomcat-8.5.46/tlskey/clientforserver.cer
接下来将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:
keytool -import -v -file /opt/apache-tomcat-8.5.46/tlskey/clientforserver.cer -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore

通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:
keytool -list -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore

3.4 配置客户端信任服务端证书
客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件。
keytool -keystore /opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore -export -alias jaytom -file /opt/apache-tomcat-8.5.46/tlskey/CA.cer
通过以上命令,已将服务器证书导出到“CA.cer”文件了。将此文件提供给客户端双击client_key.cer文件,按照提示安装证书,将证书填入 到“受信任的根证书颁发机构”。

如下是生成的证书,请将CA.cer,jayclient.p12从服务器端下载到本地

四、tomcat配置https
打开tomcat配置文件,如:/opt/apache-tomcat-8.5.46/conf/server.xml,如下两个地方配置文件
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改为如下配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="=
443" />
去掉注释 <!--<!Connector port="8443" ...?</Connector> -->
修改为如下配置
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore" keystorePass="123456"
truststoreFile="/opt/apache-tomcat-8.5.46/tlskey/jaytom.keystore" truststorePass="123456">
</Connector>
去掉注释<!-- <Connector port="8009" />-->
修改为如下配置
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort=
"443" />
修改后的配置截图如下



五、重启tomcat服务
./catalina.sh start

六 功能验证
导入证书到浏览器
将证书client_key.cer从linux服务器端下载到本地机器

导入证书
双击证书“jayclient.p12” 安装



输入证书密码“123456”,然后下一步,最后完成。

双击证书“CA.cer”证书,然后点击安装证书




以上证书已经安装完成。
在windows上面配置域名地址
C:\Windows\System32\drivers\etc

验证https地址:https://jaytom.com/

七、https改造总结
通过HTTP改造成HTTPS使网站系统信息传输变得更加安全,但同时也会让系统会带来巨大的性能损耗,使得用户体验变得比较差,这也是一直制约着 HTTPS 普及的重要原因之一。为确保网站系统的安全性,牺牲一点服务资源性能也是值得的。后续还可以单独从HTTPS连接数上去做限流控制,可以减轻高并发对服务器压力 。
有需要的朋友可以关注我的公众号,文章每日一更
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28833846/viewspace-2727484/ ,如需转载,请注明出处,否则将追究法律责任。