使用Openssl為Tomcat配置SSL(雙向認證)

來源:互聯網
上載者:User

轉載請註明出處:http://blog.csdn.net/sunyujia/

其實我手頭上有許多正規ca頒發的認證不過都是到期的,每次使用都需要調整系統日期,不方便,所以就想自己做一套以備平時測試使用。

本文只介紹如何配置,至於理論性的東西請讀者自行 百度或者google 網上很多

配置步驟:

1.安裝檢查openssl環境

安裝openssl的方法見http://blog.csdn.net/sunyujia/archive/2008/10/03/3014667.aspx

安裝完成後將openssl/bin添加到環境變數path中,該目錄下正常有4個檔案

openssl.exe,ssleay32.dll,libeay32.dll,openssl.cnf

注意:cnf副檔名會被作業系統當成捷徑,看不到副檔名,在dos下使用dir就可以看到。

進入cmd後輸入openssl可能會提示

WARNING: can't open config file: /usr/local/ssl/openssl.cnf

提示找不到openssl.cnf ,沒有關係在輸入openssl命令前添加環境變數OPENSSL_CONF即可。

set OPENSSL_CONF=openssl.cnf

本教程使用openssl.cnf預設配置即可無需修改。

2.在openssl安裝目錄(bin目錄的上一級目錄,有openssl.cnf檔案的目錄即可)建立如下批處理指令碼

在貼指令碼前我先說明下指令碼實現主要功能:

建立CA認證

簽發Server端認證

簽發Client端認證

用keytool產生tomcat使用的jks檔案

此批次檔較長,我已檢查多次如果錯誤請讀者指正,謝謝!

  1. @echo off
  2. echo.
  3. echo.
    echo 單向SSL驗證 TOMCAT_HOME/conf/server.xml檔案配置樣本
    echo.
  4. echo My Blog:ht^tp://blog.csdn.net/sunyujia/
  5. echo.
  6. set OPENSSL_CONF=openssl.cnf 
  7. echo.
  8. echo 製作根憑證
  9. echo 1.建立根證私密金鑰
  10. if not exist root-key.key (
  11.     echo 建立一個不加密的PEM格式的私密金鑰root-key.key
  12.     rem genrsa 用於產生一個 RSA 私密金鑰 
  13.     rem 1024是私密金鑰的長度,預設是 512 ,最大是 1024
  14.     openssl genrsa -out root-key.key 1024
  15. ) else (
  16.     echo 私密金鑰root-key.key已經存在
  17. )
  18. echo 2.建立根憑證請求檔案
  19. if not exist root-req.csr (
  20.     echo 使用root-key.key私密金鑰 建立一個根憑證請求檔案root-req.csr
  21.     rem -new 產生一個新的CSR, 它會要使用者輸入建立CSR的一些必須的資訊.
  22.     rem 至於需要哪些資訊,是在config檔案裡面定義好了的.
  23.     rem -key 指明我們的私人密鑰檔案名稱.允許該檔案的格式是PKCS#8. 
  24.     rem 如果-key沒有被set, 那麼就將根據config檔案裡的資訊先產生一對新的RSA密鑰 
  25.     rem -keyform 指定輸入的私人密鑰檔案的格式是DEM還是DER.DER格式採用ASN1的DER標準格式。
  26.     rem PEM格式就是base64編碼格式.
  27.     openssl req -new -out root-req.csr -key root-key.key -keyform PEM
  28. ) else (
  29.     echo 根憑證請求檔案root-req.csr已經存在
  30. )
  31. echo 3.自簽根憑證
  32. if not exist root-cert.cer (
  33.     echo 使用root-req.csr認證和root-key.key私密金鑰簽發x509格式的自簽根憑證root-cert.cer
  34.     rem -in 要處理的CSR的檔案名稱,只有-new和-newkey倆個option沒有被set,本option才有效
  35.     rem -signkey 簽名私密金鑰
  36.     rem -days認證的有效日期
  37.     openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 3650 
  38. ) else (
  39.     echo 自簽根憑證root-cert.cer已經存在
  40. )
  41. echo 4.匯出p12格式根憑證
  42. if not exist root.p12 (
  43.     openssl pkcs12 -export -clcerts -in root-cert.cer -inkey root-key.key -out root.p12 
  44. ) else (
  45.     echo p12格式根憑證root-cert.cer已經存在
  46. )
  47. echo 產生root.jks檔案
  48. set password=
  49. echo 輸入jks的密碼,密碼至少必須為6個字元:
  50. set /p password=
  51. echo 密碼是 %password% 稍後提示 信任這個認證?輸入 y 即可
  52. echo.
  53. if exist root.jks (
  54.     del root.jks
  55. )
  56. keytool -import -v -trustcacerts -storepass %password% -alias root -file root-cert.cer -keystore root.jks 
  57. echo 已產生root.jks檔案
  58. echo.
  59. echo 製作服務端認證
  60. call :sub server
  61. echo.
  62. echo 製作用戶端認證
  63. call :sub client
  64. goto :end
  65. :sub
  66. echo 1.建立私密金鑰
  67. if not exist %1-key.key (
  68.     openssl genrsa -out %1-key.key 1024
  69. ) else (
  70.     echo 私密金鑰%1-key.key已經存在
  71. )
  72. echo 2.建立認證請求檔案
  73. if not exist %1-req.csr (
  74.     openssl req -new -out %1-req.csr -key %1-key.key
  75. ) else (
  76.     echo 認證請求檔案%1-req.csr已經存在
  77. )
  78. echo 3.自簽認證
  79. if not exist %1-cert.cer (
  80.     openssl x509 -req -in %1-req.csr -out %1-cert.cer -signkey %1-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650
  81. ) else (
  82.     echo 自簽認證%1-cert.cer已經存在
  83. )
  84. echo 4.匯出p12格式認證
  85. if not exist %1.p12 (
  86.     openssl pkcs12 -export -clcerts -in %1-cert.cer -inkey %1-key.key -out %1.p12
  87. ) else (
  88.     echo 自簽認證%1.p12已經存在
  89. )
  90. goto :eof
  91. :end
  92. echo.
  93. echo 整理歸檔產生的認證檔案
  94. if not exist root (
  95.     md root
  96. )
  97. move root.p12 root/root.p12
  98. move root-cert.cer root/root-cert.cer
  99. move root-key.key root/root-key.key
  100. move root-req.csr root/root-req.csr
  101. move root-cert.srl root/root-cert.srl
  102. move root.jks root/root.jks
  103. if not exist server (
  104.     md server
  105. )
  106. move server.p12 server/server.p12
  107. move server-cert.cer server/server-cert.cer
  108. move server-key.key server/server-key.key
  109. move server-req.csr server/server-req.csr
  110. if not exist client (
  111.     md client
  112. )
  113. move client.p12 client/client.p12
  114. move client-cert.cer client/client-cert.cer
  115. move client-key.key client/client-key.key
  116. move client-req.csr client/client-req.csr
  117. if not exist 認證 (
  118.     md 認證
  119. )
  120. move root 認證/root
  121. move client 認證/client
  122. move server 認證/server
  123. echo 整理完畢
  124. pause

最終產生一個認證目錄

我們所需的檔案清單

認證/root/root.jks

認證/root/root.p12 可選

認證/server/server.p12

認證/client/client.p12

3.配置tomcat的conf/server.xml檔案

將root.jks和server.p12 複製到tomcat目錄下,檔案可以不放置在這裡如下配置支援絕對路徑和相對路徑。

在conf/server.xml中加入如下配置

  1.     <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
  2.                maxThreads="150" scheme="https" secure="true"
  3.                clientAuth="true" sslProtocol="TLS" 
  4.                acceptCount="100"
  5.                keystoreFile="server.p12" 
  6.                keystorePass="密碼" 
  7.                keystoreType="PKCS12" 
  8.                truststoreFile="root.jks" 
  9.                truststorePass="密碼" 
  10.                truststoreType="JKS" 
  11.     />

4.簡單驗證

登入https://127.0.0.1/會提示請求的網站要求認證,將client.p12匯入到瀏覽器中即可

位置在internet選項-內容-認證

client.p12匯入到個人認證選項卡裡面

root.p12匯入到可信任的根憑證授權單位裡面

 

本文測試環境tomcat6

本文參考文章:
http://blog.chinaunix.net/u/12066/showart_491871.html
http://hi.baidu.com/favesoft/blog/item/9b94dbef3e573735acafd5ff.html
http://blog.chinaunix.net/u/12066/showart_491899.html
http://www.icnote.com/read.php?80
http://www.dedecms.com/web-art/fuwuqi/20060913/26244.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.