• 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/

                 

               

          

         

  • 相关阅读:
    Python 字典(Dictionary)
    Python函数
    Python 模块
    一步步学习SPD2010--第二章节--处理SP网站(9)---- 关键点
    一步步学习SPD2010--第二章节--处理SP网站(8)---- 保存和使用网站模板
    一步步学习SPD2010--第二章节--处理SP网站(7)---- 导航网站的内容
    一步步学习SPD2010--第二章节--处理SP网站(6)---- 探索SP网站
    一步步学习SPD2010--第二章节--处理SP网站(5)附—升级自定义SP网站的复杂性
    一步步学习SPD2010--第二章节--处理SP网站(5)--重置网站模板
    一步步学习SPD2010--第二章节--处理SP网站(4)--删除SP网站
  • 原文地址:https://www.cnblogs.com/huaixiaonian/p/14922450.html
Copyright © 2020-2023  润新知