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:\key\m.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:\key\m.jks -file E:\key\m.crt -storepass 123456
         執行后會出現如下提示:存儲在文件 <E:\key\m.crt> 中的證書

    3. 客戶端導入證書    

         命令:keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts -file  "E:\key\m.crt" -alias tomcat

          ps: 參數路徑如果帶空格,一定要加" ",否則匯報Files錯誤

        執行后

              輸入密鑰庫口令: 這里輸入的口令必須是changeit; 輸入完成后就會出現如下信息,若%JAVA_HOME%\jre\lib\security\目錄下沒有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:\key\m.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/

             

           

      

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM