tomcat配置https,單方驗證,並自動將http請求轉成https


  第一次寫博客,希望大家多多支持。如有覺得不對的請大家指正,本博客寫來只為自己方便查找。

  使用jdk中自帶的keytool生成數字證書。

  第一步:生成密鑰文件

  在這之前,讓我們看看keytool的幫助吧

    通過win+R輸入cmd,然后輸入以下命令

    keytool -genkey -help,就會出現如下:

      D:\>keytool -genkey -help
      keytool -genkeypair [OPTION]...

      生成密鑰對

      選項:

        -alias <alias> 要處理的條目的別名
        -keyalg <keyalg> 密鑰算法名稱
        -keysize <keysize> 密鑰位大小
        -sigalg <sigalg> 簽名算法名稱
        -destalias <destalias> 目標別名
        -dname <dname> 唯一判別名
        -startdate <startdate> 證書有效期開始日期/時間
        -ext <value> X.509 擴展
        -validity <valDays> 有效天數
        -keypass <arg> 密鑰口令
        -keystore <keystore> 密鑰庫名稱
        -storepass <arg> 密鑰庫口令
        -storetype <storetype> 密鑰庫類型
        -providername <providername> 提供方名稱
        -providerclass <providerclass> 提供方類名
        -providerarg <arg> 提供方參數
        -providerpath <pathlist> 提供方類路徑
        -v 詳細輸出
        -protected 通過受保護的機制的口令

        使用 "keytool -help" 獲取所有可用命令

    這里生成密鑰

    keytool -genkey -alias alias -keyalg RSA -keysize 2048 -keypass 123456 -validity 36600 -keystore E:\key\m.jks -storepass 123456

    這里的各個參數就對應上面的幫助吧,就不一一介紹了。

    輸入上面命令就會出現如下信息:

      您的名字與姓氏是什么?
      [Unknown]: 這里輸入你的ip,若是服務器的話,就輸入域名,后面的信息就隨便輸入即可
      您的組織單位名稱是什么?
      [Unknown]: 
      您的組織名稱是什么?
      [Unknown]: 
      您所在的城市或區域名稱是什么?
      [Unknown]: 
      您所在的省/市/自治區名稱是什么?
      [Unknown]: 
      該單位的雙字母國家/地區代碼是什么?
      [Unknown]: 
      CN=172.168.11.188, OU=x, O=x, L=x, ST=x, C=x是否正確?
      [否]: y  這里輸入值是讓你確認你上面的信息是否正確,若不正確,除了y的其他都可以。輸入之后就會重復上面的操作。

   執行完成之后就可以在e盤下面的key文件夾下生成一個密鑰m.jks

 

  第二步:導出證書

    命令:keytool -export -alias alias -keystore E:\key\m.jks -file E:\key\m.crt -storepass 123456

    執行后會出現如下提示:存儲在文件 <E:\key\m.crt> 中的證書

    在這里就可以看到導出的證書m.crt

    

  第三步:客戶端導入證書

 

    命令:

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

  執行后

    輸入密鑰庫口令:  這里輸入的口令必須是changeit; 輸入完成后就會出現如下信息,若%JAVA_HOME%\jre\lib\security\目錄下沒有cacerts,還要再輸入一次changeit;
    所有者: CN=172.168.11.188, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    發布者: CN=172.168.11.188, 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

    擴展:

    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 62 42 1F 16 B0 5C 94 77 BF 34 D3 C5 62 D3 D0 CB bB...\.w.4..b...
    0010: CE A1 94 D1 ....  
    ]
    ]

    是否信任此證書? [否]: y   輸入y即可
    證書已添加到密鑰庫中

 

    第四步:

      找到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="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\m.jks"   這里是你生成密鑰的路徑
keystorePass="123456"   這里是你生成密鑰時的密碼
keyAlias="alias"   這里是你設置的別名(記得保持一致)
keystoreType="JKS" />

到這里就配置完了,然后啟動tomcat,輸入https://您的名字與姓氏:8443/就會出現如下界面

點擊繼續瀏覽此網站就會出現tomcat首頁

接下來配置http自動轉為https:

1.<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\selfissue.jks"
keystorePass="123654"
keyAlias="selfissue"
keystoreType="JKS" />
修改為
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="200"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="E:\key\selfissue.jks"
keystorePass="123654"
keyAlias="selfissue"
keystoreType="JKS" />
2.將<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改為<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

3.<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改為
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
4.你apache中的/conf/web.xml,在該文件</web-app>前面面加上這樣一段:
<login-config>
<!-- Authorization setting for SSL -->
<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>

 

回車出現如下界面

 


免責聲明!

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



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