轉載http://hi.baidu.com/xuhonghui126/blog/item/a32c8dceb99a5e0493457e5b.html

 

配置步驟:

注意:
(What is your fist and last name?」,請輸入您要申請SSL證書的域名,而不是真的輸入您的個人姓名,如果您需要為www.domain.com申請SSL證書就不能只輸入 domain.com。SSL證書是嚴格綁定域名的。)

 

 

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文件

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

 

@echo off 
echo. 
echo.
echo 單向SSL驗證 TOMCAT_HOME\conf\server.xml文件配置示例
echo. 
echo My Blog:ht^tp://blog.csdn.net/sunyujia/ 
echo. 
set OPENSSL_CONF=openssl.cnf 
echo. 
echo 製作根證書 
echo 1.創建根證私鑰 
if not exist root-key.key ( 
    echo 創建一個不加密的PEM格式的私鑰root-key.key 
    rem genrsa 用於生成一個 RSA 私鑰 
    rem 1024是私鑰的長度,默認是 512 ,最大是 1024 
    openssl genrsa -out root-key.key 1024 
) else ( 
    echo 私鑰root-key.key已經存在 

echo 2.創建根證書請求文件 
if not exist root-req.csr ( 
    echo 使用root-key.key私鑰 創建一個根證書請求文件root-req.csr 
    rem -new 產生一個新的CSR, 它會要用戶輸入創建CSR的一些必須的信息. 
    rem 至於需要哪些信息,是在config文件裡面定義好了的. 
    rem -key 指明我們的私有密鑰文件名.允許該文件的格式是PKCS#8. 
    rem 如果-key沒有被set, 那麼就將根據config文件裡的信息先產生一對新的RSA密鑰 
    rem -keyform 指定輸入的私有密鑰文件的格式是DEM還是DER.DER格式採用ASN1的DER標準格式。 
    rem PEM格式就是base64編碼格式. 
    openssl req -new -out root-req.csr -key root-key.key -keyform PEM 
) else ( 
    echo 根證書請求文件root-req.csr已經存在 

echo 3.自簽根證書 
if not exist root-cert.cer ( 
    echo 使用root-req.csr證書和root-key.key私鑰簽發x509格式的自簽根證書root-cert.cer 
    rem -in 要處理的CSR的文件名稱,只有-new和-newkey倆個option沒有被set,本option才有效 
    rem -signkey 簽名私鑰 
    rem -days證書的有效日期 
    openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 3650 
) else ( 
    echo 自簽根證書root-cert.cer已經存在 

echo 4.導出p12格式根證書 
if not exist root.p12 ( 
    openssl pkcs12 -export -clcerts -in root-cert.cer -inkey root-key.key -out root.p12 
) else ( 
    echo p12格式根證書root-cert.cer已經存在 
)

echo 生成root.jks文件 
set password= 
echo 輸入jks的密碼,密碼至少必須為6個字符: 
set /p password= 
echo 密碼是 %password% 稍後提示 信任這個認證?輸入 y 即可 
echo. 
if exist root.jks ( 
    del root.jks 

keytool -import -v -trustcacerts -storepass %password% -alias root -file root-cert.cer -keystore root.jks 
echo 已生成root.jks文件

echo. 
echo 製作服務端證書 
call :sub server 
echo. 
echo 製作客戶端證書 
call :sub client 
goto :end

:sub 
echo 1.創建私鑰 
if not exist %1-key.key ( 
    openssl genrsa -out %1-key.key 1024 
) else ( 
    echo 私鑰%1-key.key已經存在 

echo 2.創建證書請求文件 
if not exist %1-req.csr ( 
    openssl req -new -out %1-req.csr -key %1-key.key 
) else ( 
   echo 證書請求文件%1-req.csr已經存在 

echo 3.自簽證書 
if not exist %1-cert.cer ( 
    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 
) else ( 
    echo 自簽證書%1-cert.cer已經存在 

echo 4.導出p12格式證書 
if not exist %1.p12 ( 
    openssl pkcs12 -export -clcerts -in %1-cert.cer -inkey %1-key.key -out %1.p12 
) else ( 
    echo 自簽證書%1.p12已經存在 

goto :eof

:end

echo. 
echo 整理歸檔生成的證書文件 
if not exist root ( 
    md root 

move root.p12 root/root.p12 
move root-cert.cer root/root-cert.cer 
move root-key.key root/root-key.key 
move root-req.csr root/root-req.csr 
move root-cert.srl root/root-cert.srl 
move root.jks root/root.jks 
if not exist server ( 
    md server 

move server.p12 server/server.p12 
move server-cert.cer server/server-cert.cer 
move server-key.key server/server-key.key 
move server-req.csr server/server-req.csr 
if not exist client ( 
    md client 

move client.p12 client/client.p12 
move client-cert.cer client/client-cert.cer 
move client-key.key client/client-key.key 
move client-req.csr client/client-req.csr 
if not exist 證書 ( 
    md 證書 

move root 證書/root 
move client 證書/client 
move server 證書/server 
echo 整理完畢 
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中加入如下配置

 

    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true" 
               clientAuth="true" sslProtocol="TLS" 
               acceptCount="100" 
               keystoreFile="server.p12" 
               keystorePass="密碼" 
               keystoreType="PKCS12" 
               truststoreFile="root.jks" 
               truststorePass="密碼" 
               truststoreType="JKS" 
    />

4.簡單驗證

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

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

client.p12導入到個人證書選項卡里面

root.p12導入到受信任的根證書頒發機構裡面

 

Openssl 生成公私鑰文件

生成私鑰:
openssl genrsa -out private.key 1024

生成公鑰:
openssl rsa -in private.key -pubout -out pub.key

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()