轉載 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

http://hi.baidu.com/xuhonghui126/blog/item/a32c8dceb99a5e0493457e5b.html
創作者介紹

麥克的學習紀錄

miggo 發表在 痞客邦 PIXNET 留言(0) 人氣()