Tomcat6配置使用SSL雙向認證

來源:互聯網
上載者:User
最近要做一個登入時數位憑證驗證的功能,在使用者登入時除了效驗使用者名稱密碼,還需驗證其數位憑證。

相關資源:IBM
developerWroks中國中的tomcat4中使用SSL,javaeye中的Acegi X.509雙向認證

與tomcat4中使用SSL中的異同:jdk1.4中已經包含JSSE。

與AcegiX.509雙向認證中的異同:tomcat6設定檔多了SSLEnabled="true"屬性。

1.產生CA認證。目前不使用第三方權威機構的CA來認證,自己充當CA的角色。

1.建立私密金鑰 :C:/OpenSSL/apps>openssl genrsa -out root/root-key.pem
1024
2.建立認證請求 :C:/OpenSSL/apps>openssl req -new -out root/root-req.csr
-key root/root-key.pem
3.自簽署認證 :C:/OpenSSL/apps>openssl x509 -req -in
root/root-req.csr -out root/root-cert.pem -signkey
root/root-key.pem -days
3650
4.將認證匯出成瀏覽器支援的.p12格式 :C:/OpenSSL/apps>openssl pkcs12 -export
-clcerts -in root/root-cert.pem -inkey
root/root-key.pem -out root/root.p12

2.產生server認證。

1.建立私密金鑰 :C:/OpenSSL/apps>openssl genrsa -out server/server-key.pem
1024
2.建立認證請求 :C:/OpenSSL/apps>openssl req -new -out
server/server-req.csr -key server/server-key.pem
3.自簽署認證
:C:/OpenSSL/apps>openssl x509 -req -in server/server-req.csr -out
server/server-cert.pem -signkey
server/server-key.pem -CA root/root-cert.pem
-CAkey root/root-key.pem -CAcreateserial -days 3650
4.將認證匯出成瀏覽器支援的.p12格式
:C:/OpenSSL/apps>openssl pkcs12 -export -clcerts -in server/server-cert.pem
-inkey
server/server-key.pem -out server/server.p12

3.產生client認證。

1.建立私密金鑰 :C:/OpenSSL/apps>openssl genrsa -out client/client-key.pem
1024
2.建立認證請求 :C:/OpenSSL/apps>openssl req -new -out
client/client-req.csr -key client/client-key.pem
3.自簽署認證
:C:/OpenSSL/apps>openssl x509 -req -in client/client-req.csr -out
client/client-cert.pem -signkey
client/client-key.pem -CA root/root-cert.pem
-CAkey root/root-key.pem -CAcreateserial -days 3650
4.將認證匯出成瀏覽器支援的.p12格式
:C:/OpenSSL/apps>openssl pkcs12 -export -clcerts -in client/client-cert.pem
-inkey
client/client-key.pem -out client/client.p12

4.根據root認證產生jks檔案

C:/OpenSSL/apps/root>keytool -import -v -trustcacerts -storepass
password -alias root -file root-cert.pem
-keystore root.jks

5.配置tomcat
ssl,修改conf/server.xml。tomcat6中多了SSLEnabled="true"屬性。
keystorefile,
truststorefile設定為你正確的相關路徑 xml 代碼 

  1. <connector secure="true" scheme="https" protocol="HTTP/1.1" port="8443"      
  2. sslenabled="true" maxhttpheadersize="8192" maxthreads="150"      
  3. minsparethreads="25" maxsparethreads="75" enablelookups="false"      
  4. disableuploadtimeout="true" acceptcount="100" sslprotocol="TLS"      
  5. clientauth="true" keystorefile="d:/path/bin/x509/server.p12"      
  6. keystoretype="PKCS12" keystorepass="123456" truststorefile="d:/path/bin/x509/root.jks"    
  7. truststoretype="JKS" truststorepass="123456"/>    

6.將root.p12,client.p12分別匯入到IE中去(開啟IE->;Internet選項->內容->認證)。

root.p12匯入至可信任的根憑證授權單位,client.p12匯入至個人

7.訪問你的應用http://ip:8443,如果配置正確的話會出現請求你數位憑證的對話方塊。

8.在jsp中取得符合x.509格式的認證java 代碼 

  1. <%      
  2.         //獲得certificate chain     
  3.         X509Certificate[] ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");     
  4.       if(ca==null)     
  5.       {     
  6.         out.println("No cert info!");     
  7.       } else {     
  8.         String  serial=ca[0].getSerialNumber().toString();     
  9.         String DN=ca[0].getSubjectDN().toString();       
  10.       }     
  11.       %>  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.