tomcat 配置客戶端證書認證


在完成配置客戶端證書認證后,瀏覽器以https訪問服務器的時候,會提示選擇證書,之后,服務器端會驗證證書。也就意味着只有擁有有效證書的客戶端才能打開該網站。

以下是具體的配置過程。

1. 在服務器端生成相關證書

(1) 生成服務器證書容器。

/usr/java/jdk1.6.0_43/bin/keytool -validity 36500 -genkey -v -alias server_test -keyalg RSA -keystore server.keystore -dname "CN=105.12.201.31,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test001 -keypass test001

其中,

validity 指定了有效期多少天,

dname 設定了簽名中包含的一些信息,其中注意,據說CN指定的ip地址需和訪問的ip一致(未測試過不相同的時候是否就會拒絕)。

keyalg 指定簽名的算法,RSA或者DSA

storepass和keypass分別指定容器存儲密碼和讀取密碼。設置成相同的密碼,因為tomcat里只有一個密碼的設置。

(2) 生成信賴的客戶端證書容器

/usr/java/jdk1.6.0_43/bin/keytool -validity 36500 -genkey -v -alias server_test_trust -keyalg RSA -keystore server_trust.keystore -dname "CN=105.12.201.31,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test002 -keypass test002

(3) 生成客戶端用秘鑰對

/usr/java/jdk1.6.0_43/bin/keytool -validity 36500 -genkeypair -v -alias client_1 -keyalg RSA -storetype PKCS12 -keystore client_1.p12 -dname "CN=client_1,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test003 -keypass test003

導出客戶端用證書

/usr/java/jdk1.6.0_43/bin/keytool -export -v -alias client_1 -keystore client_1.p12 -storetype PKCS12 -storepass test003 -rfc -file client_1.cer

(4) 將客戶端用的證書導入至服務端信賴的客戶端的證書容器

/usr/java/jdk1.6.0_43/bin/keytool -import -v -alias client_1 -file client_1.cer -keystore server_trust.keystore -storepass test002

2. 修改tomcat的配置文件 conf/server.xml

找到原先的https的配置部分,默認是處於注釋狀態,將它放開

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               />

 

修改為:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS" 
               keystoreFile="${catalina.base}/keystore/server.keystore" keystorePass="test001"
               truststoreFile="${catalina.base}/keystore/server_trust.keystore" truststorePass="test002"
               />

 

 3. web app中設置強制SSL訪問

  WEB-INF/web.xml中

    <!-- 強制SSL,即http請求自動跳轉成https --> 
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/*</url-pattern><!-- 全站使用SSL -->
        </web-resource-collection>
        <user-data-constraint>
            <description>SSL required</description>
            <!-- CONFIDENTIAL: 確保傳輸數據不被修改,不能被查看 -->
            <!-- INTEGRAL: 確保傳輸數據不被修改 -->
            <!-- NONE: 不做特殊限制-->
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

 

4. 客戶端PC導入上面生成的 client_test.cer 以及 client_test.p12 后,重啟瀏覽器,即可訪問

  初次訪問會彈出選擇證書的對話框,選中導入的cer證書即可。

 


免責聲明!

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



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