zoukankan      html  css  js  c++  java
  • javaWeb项目http转https详细过程记录

    前言:

          因为数据安全性问题,需要将Web服务协议由http转为https,这里使用Keytool 来生成证书,Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore 的文件(受密码保护)中。

          (ps:我们可以在java安装的bin目录找到这个keytool.exe程序)      

           keytool的命令说明: 
                 通过win+R输入cmd,然后输入以下命令: keytool -genkey -help,就会出现如下:
          keytool -genkeypair [OPTION]…
          命令说明:
            -alias 要处理的条目的别名
            -keyalg 密钥算法名称
            -keysize 密钥位大小
            -sigalg 签名算法名称
            -destalias 目标别名
            -dname 唯一判别名
            -startdate 证书有效期开始日期/时间
            -ext X.509 扩展
            -validity 有效天数
            -keypass 密钥口令
            -keystore 密钥库名称
            -storepass 密钥库口令
            -storetype 密钥库类型
            -providername 提供方名称
            -providerclass 提供方类名
            -providerarg 提供方参数
            -providerpath 提供方类路径
            -v 详细输出
            -protected 通过受保护的机制的口令

    实现过程:  (转载自: https://blog.csdn.net/su_zp/article/details/93853054 )

          1. 生成秘钥文件   

              以管理员的身份进入 cmd,在cmd里进入jdk的bin路径下,然后输入 以下命令:keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keypass 123456 -validity 36600 -keystore E:keym.jks -storepass 123456
              输入上面命令就会出现如下信息:

             您的名字与姓氏是什么?
          [Unknown]: 这里输入你的ip,若是服务器的话,就输入域名,后面的信息就随便输入即可
          您的组织单位名称是什么?
          [Unknown]:
          您的组织名称是什么?
          [Unknown]:
          您所在的城市或区域名称是什么?
          [Unknown]:
          您所在的省/市/自治区名称是什么?
          [Unknown]:
          该单位的双字母国家/地区代码是什么?
          [Unknown]:
          CN=172.172.172.172, OU=x, O=x, L=x, ST=x, C=x是否正确?
          [否]: y 这里输入值是让你确认你上面的信息是否正确,若不正确,除了y的其他都可以。输入之后就会重复上面的操作。

              

             执行完成之后就可以在e盘下面的key文件夹下生成一个密钥m.jks

         2.  导出证书

             命令:keytool -export -alias tomcat -keystore E:keym.jks -file E:keym.crt -storepass 123456
             执行后会出现如下提示:存储在文件 <E:keym.crt> 中的证书

        3. 客户端导入证书    

             命令:keytool -import -keystore "%JAVA_HOME%jrelibsecuritycacerts -file  "E:keym.crt" -alias tomcat

              ps: 参数路径如果带空格,一定要加" ",否则汇报Files错误

            执行后

                  输入密钥库口令: 这里输入的口令必须是changeit; 输入完成后就会出现如下信息,若%JAVA_HOME%jrelibsecurity目录下没有cacerts,还要再输入一次changeit;
        所有者: CN=172.172.172.172, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
        发布者: CN=172.172.172.172, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown  
        序列号: 402163bd
        有效期开始日期: Fri Feb 24 16:53:06 CST 2017, 截止日期: Tue May 11 16:53:06 CST 2117
        证书指纹:
        MD5: A8:ED:C3:13:24:F5:D9:7E:E1:AF:B0:BB:B4:8C:EA:EA
        SHA1: 6B:69:79:1A:B0:AD:46:E2:98:74:FF:79:22:E6:A4:7B:7F:4E:9D:19
        SHA256: B3:23:F5:DD:6E:42:A4:14:CF:6A:9D:83:43:7A:9E:FA:B1:69:24:E5:15:DD:A5:97:BB:94:A5:A9:29:8D:2D:BE
        签名算法名称: SHA256withRSA
        版本: 3

                  是否信任此证书? [否]: y 输入y即可
             证书已添加到密钥库中
       4. 配置tomcat文件     

           找到tomcat目录下的conf文件下的server.xml;

           找到
          <Connector port="8080" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />

           在这个后面加入

           <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                    //如果要修改端口号请注意一起修改其他相同的端口号。
                    maxThreads="1500"
                    SSLEnabled="true"
                    scheme="https"
                    secure="true"
                    clientAuth="false"
                    sslProtocol="TLS"
                    keystoreFile="E:keym.jks"  这里是你生成密钥的路径
                    keystorePass="123456"       这里是你生成密钥时的密码
                    keyAlias="tomcat"                 这里是你设置的别名(记得保持一致)
                    keystoreType="JKS" />
            到这里就配置完了,然后启动tomcat,输入https://您的名字与姓氏:8443/就会出现如下界面

            

              5.  自动将http请求转为https

                  在apache tomcat中的/conf/web.xml或者项目中 的web.xml文件前面面加上这样一段:         

    <login-config>
           <auth-method>CLIENT-CERT</auth-method>
           <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>
    <security-constraint>
           <!-- Authorization setting for SSL -->
           <web-resource-collection >
                 <web-resource-name >SSL</web-resource-name>
                 <url-pattern>/*</url-pattern>
           </web-resource-collection>
           <user-data-constraint>
                  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
    </security-constraint>

                  在浏览器里以http访问tomcat或者项目进会自动跳转到https请求地址。

    6. 访问页面,使用IE浏览器访问会出现以下问题

         

            出现此页面的原因是浏览器端需要安装证书(当然,点击转到此页也是可以继续访问的),IE证书安装方式如下:

           点击转到此页,进入项目页面,浏览器右上角会有证书错误的提示,如下图

            

            点击查看证书

            

            点击安装证书:

              

             根据实际情况选择,然后点击下一步:

             

            导入证书到受信任的证书颁发机构,下一步

            

           点击完成,开始安装.

              

              点击是,完成安装.

              

           安装完成后重启浏览器,再次访问就不会出现上面的提示页面了

          7. 使用chrome访问,会自动导入证书,但是也会出现类似问题,如下图

               

           我们进入Chrome的设置,点击安全

           

                   选择管理证书

            

            如果在受信任的证书颁发机构里面没有找到对应的证书,导入相应的证书即可

            

            

             

            PS: 证书文件的页面可以下载到,如下图,点击到复制到文件即可下载出来

                                            

            

           

          

           

           安装证书后,如果还没有解决, 原因是由于 Chrome停止使用个人自己签署的SSL证书,就是说如果不是权威认证机构颁发的证书,此页面提示会一直存在.  

            解决方式如下:  详见: https://www.codenong.com/43665243/

                 

               

          

         

  • 相关阅读:
    安全编码1
    VPP tips
    VPP概述汇总
    C语言安全编码摘录
    TCP-proxy
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.4. Matplotlib: plotting
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.3. NumPy: creating and manipulating numerical data
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.1. Python scientific computing ecosystem
    25马5跑道,求最快的五匹马的需要比赛的次数
  • 原文地址:https://www.cnblogs.com/huaixiaonian/p/14922450.html
Copyright © 2011-2022 走看看