ITPub博客

首页 > 应用开发 > Java > tomcat8配置https协议访问

tomcat8配置https协议访问

原创 Java 作者:jaymarco 时间:2020-10-16 18:12:36 0 删除 编辑

一、背景介绍

    由于当前系统网站采用的是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博客 ” ,链接:http://blog.itpub.net/28833846/viewspace-2727484/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    65
  • 访问量
    27666