gown_way的gravatar头像
gown_way 2016-03-19 18:03:05
tomcat配置https协议详细步骤

1.介绍了密码学的相关基础知识后,本文介绍如何在tomcat上搭建https服务。

 环境:jdk7,tomcat7,windows7

2.我们使用java中自带的javatool工具来制作所需的https所需的证书,keytool是java自带的用于密钥和证书的生成和管理工具。

3.这里先介绍两个文件格式:

 jks(java key store),用来存储密钥已经数字证书的文件

 csr(Certificate Signing Request),证书请求文件(就是证书申请者向相关证书颁发机构申请证书时所提交的文件,机构使用其根证书私钥签名就生成了证书公钥文件--证书)。

 cer:用于存储公钥证书的文件(就是数字证书)

4.在开始之前我们先明白我们应该怎样做:

  4.1.先制作一个根证书(用于签发服务证书)

  4.2.生成一个CSR格式的证书请求文件

  4.3.用根证书对证书请求文件做签名,并生成服务证书

  4.4.将根证书添加到浏览器受信任的根证书颁发机构中

  4.5.配置tomcat,使之支持https,并为它指明已经签发好的服务证书的路径

  4.6.部署一个web应用,并访问。

5.我们先进入命令行窗口,输入keytool,显示如下:

         tomcat配置https协议详细步骤

 我们可以看到,有生成证书请求,生成密钥对,根据证书请求生成证书等想关命令。

 

Step1:生成根证书

     keytool -genkeypair -alias ROOTCERT -keyalg RSA -keystore rootlib.jks

     命令解释:生成一对RSA非对称密钥和一个自签名证书,以别名ROOTCERT存储在rootlib中。

     注意:enter后,会提示输入密钥库的使用口令,和填写相关OU,CN等信息。如下图:

         tomcat配置https协议详细步骤

     之后会在你的当前工作目录下生成一个rootlib.jks的文件。

Step2:生成证书请求

      1)keytool -genkeypair -alias SERVERCERT -keyalg RSA -keystore serverlib.jks (跟step1步骤一样)。

       注意:此时”您的名字与姓氏是什么” ,需要输入localhost(就是证书请求者的域名)。

      2)keytool -certreq -file server.csr -alias SERVERCERT -keystore serverlib.jks

       命令解释:在serverlib文件中从别名为SERVERCERT中取出公钥和用户信息生 成证书请求,并写入到server.csr文件中。

      之后会在你的当前工作目录下生成一个server.csr的文件。

Step3:用根证书对证书请求签名,生成应用证书

      keytool -gencert -infile server.csr -outfile servercert.cer -alias ROOTCERT -keystore rootlib.jks

      命令解释:使用别名为ROOTCERT的私钥对server.csr证书请求进行签发证书,并导入到servercert.cer 文件中。

Step4:导出根证书,添加为客户端受信任的根证书颁发机构中

     1)keytool -exportcert -alias ROOTCERT -file root.cer -keystore rootlib.jks

     命令解释:从rootlib.jks将别名ROOTCERT的证书导出到root.cer文件中

     2)回到图形界面,切到命令窗口的工作目录下,会有5个文件。

                    tomcat配置https协议详细步骤

     双击root.cer

             tomcat配置https协议详细步骤

     点击安装证书,然后下一步,注意:

          tomcat配置https协议详细步骤

    在证书存储时,选择放入指定的证书存储,点击浏览,选择受信任的根证书颁发 机构,然后确认,下一步,完成,确认添加,即可。

Step5:配置tomcat

     1)我们先要更新serverlib.jks中的证书(用根证书签发好的应用证书--servercert.cer)

       keytool -importcert -alias SERVERCERT -file server.cer -keystore serverlib.jks

      此时会报:无法从回复中建立链(这是因为更新的证书无法信任)。我们先要将根证书导入到serverlib.jks中,使之信任

      2)keytool -importcert -alias TRUSTCERT -file root.cer -keystore serverlib.jks

      3)这是在执行1)中的命令,即可更新。

       注意:更新证书时的别名不能写错,否则keytool工具会认为添加。

      4)现在开始配置tomcat,修改server.xml文件

                   <Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"

               minSpareThreads="5" maxSpareThreads="75"

               enableLookups="true" disableUploadTimeout="true"

               acceptCount="100"  maxThreads="200" SSLEnabled="true" 

                    scheme="https" secure="true"

               keystoreFile="E:/key/serverlib.jks" keystorePass="123456"

               clientAuth="false" sslProtocol="TLS"/>

          clientAuth:设置是否双向验证,默认为false,设置为true代表双向验证,这里我们一般只做服务器验证

          keystoreFile:服务器证书文件路径

          keystorePass:服务器证书密码

          truststorePass:根证书密码

           注意:tomcat中https端口是8443,我改成了443(https的默认端口),需要将http的redirectPort值也要改成443,这样浏览器发送https请求时才可以重定向到修改的443端口上。

       5)部署一个web应用,修改首页index.jsp

            tomcat配置https协议详细步骤

        将应用添加到tomcat中,启动tomcat。

        在地址栏输入:

            tomcat配置https协议详细步骤

         点击Login

            tomcat配置https协议详细步骤

         此时再看地址栏,我们点击https前面的锁,就可以看到我们的应用证书了。

              tomcat配置https协议详细步骤

        

          在点击证书信息,就可以看我们申请的证书内容了,此时我们再用代理的方式抓包如下:

                tomcat配置https协议详细步骤

         

          浏览器与服务器之间数据就会被加密后在传输了。

          注意:在step2时,我们生成证书请求时的 ”您的名字与姓氏是什么”的值需要我们的服务的主机名,如果不一致的浏览器访问时就会报错,如下图

                 tomcat配置https协议详细步骤

           这样,一个简单https协议服务我们就搭建好了。

     文中有误的地方,欢迎指出。


打赏
最近浏览
juanito8396  LV6 2022年2月17日
yueguangbaohe 2021年5月30日
暂无贡献等级
3200500079 2020年9月14日
暂无贡献等级
wsle1011 2020年9月7日
暂无贡献等级
一哥simon  LV1 2020年7月13日
penghongyou  LV2 2020年4月27日
blackboy123  LV2 2020年4月27日
lecan520  LV1 2020年3月2日
大风车22  LV4 2019年12月18日
gongjunjienb  LV15 2019年11月13日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友