這篇是【CollabNet Subversion Edge 安裝筆記 (1):基本安裝設定篇】與【CollabNet Subversion Edge 安裝筆記 (2):整合 AD 網域篇】 系列文章的最後一篇, 主要用來說明如何利用 OpenSSL 工具與 Java6 的 keytool.exe 工具將金鑰安裝至 Java Key Store (JKS) 之中,以及如何正確設定 Jetty WebServer 與 Apache 能提供 SSL 連線,當時真的搞好久,寫完此篇文章後我就決定把他從我腦中移開,哈哈。 cnwan.com.cn
在安裝 SSL 憑證之前,我先假設各位已經取得內含私密金鑰的 PKCS#12 檔案,正常的情況下這類檔案的副檔名為 *.pfx 或 *.p12 等,拿到 PKCS#12 私密金鑰檔後,先透過 OpenSSL.exe 工具產生一組 All in One (所有相關檔案都集中在一個檔案裡) 的憑證檔,減少後續操作的複雜度。
備註:由於 CollabNet Subversion Edge 已內建此工具,執行檔路徑在 C:\csvn\bin\openssl.exe 菜鸟网
假設你的 PKCS#12 檔案名稱為 server.p12,執行完以下指令後會先需要輸入金鑰密碼,成功後會再要求你再輸入兩次 PEM 密碼,你直接輸入跟你原本的金鑰密碼即可,這一步可以直接按下 Enter 跳過,完成後會產生 all-in-one.key 檔案。
openssl pkcs12 -info -in server.p12 > all-in-one.key |
WARNING: can't open config file: /usr/local/ssl/openssl.cnf |
建議在執行指令前先設定好 OPENSSL_CONF 環境變數,請執行時先查出你的 Redmine 的安裝目錄:
set OPENSSL_CONF=C:\csvn\data\certs\openssl.cnf |
或可以設定到系統環境變數上:
1. 轉換金鑰為 key.der 檔案,指令執行的過程中會需要再輸入一次金鑰密碼:
openssl pkcs8 -topk8 -nocrypt -in all-in-one.key -inform PEM -out key.der -outform DER |
openssl.exe x509 -in all-in-one.key -inform PEM -out cert.der -outform DER |
"C:\Program Files\Java\jre6\bin\keytool.exe" -import -alias importkey -file cert.der |
如果你沒有 Java6 的話 ( 例如 Java 1.5 ),那步驟會麻煩些,你必須先下載 ImportKey.class 回來,然後執行以下指令匯入:
java ImportKey key.der cert.der
透過此工具匯入所產生的 keystore 檔預設會被建立在 %USERPROFILE%\keystore.ImportKey,而且不能指派 keystore 密碼,透過此工具產生的 keystore 密碼皆為 importkey:
cd /D C:\csvn\appserver |
2. 執行以下指令,最後一個參數為要產生 OBF 格式的密碼,在這裡我們用 importkey www.cnwan.com.cn
java -cp lib\jetty-http-7.0.2.v20100331.jar;lib\jetty-util-7.0.2.v20100331.jar org.eclipse.jetty.http.security.Password importkey |
如果用 keytool.exe 產生的檔案為 %USERPROFILE%\.keystore ,如果用 ImportKey.class 產生的檔案為 %USERPROFILE%\keystore.ImportKey,你可直接將此檔案更名後覆蓋以下檔案:
C:\csvn\appserver\etc\svnedge.jks |
C:\csvn\appserver\etc\svnedge-ssl.xml |
1. 準備 server.crt 檔案並放到以下路徑 "D:\csvn\data\conf\server.crt"
openssl x509 -inform DER -in cert.der -out server.crt |
openssl.exe pkcs8 -in all-in-one.key -inform PEM -out server.key |
SSLCertificateChainFile "C:\csvn\data\conf\server.ca" |
2. 執行以下指令,最後一個參數為要產生 OBF 格式的密碼,在這裡我們用 importkey www.cnwan.com.cn
java -cp lib\jetty-http-7.0.2.v20100331.jar;lib\jetty-util-7.0.2.v20100331.jar org.eclipse.jetty.http.security.Password importkey |
如果用 keytool.exe 產生的檔案為 %USERPROFILE%\.keystore ,如果用 ImportKey.class 產生的檔案為 %USERPROFILE%\keystore.ImportKey,你可直接將此檔案更名後覆蓋以下檔案:
C:\csvn\appserver\etc\svnedge.jks |
C:\csvn\appserver\etc\svnedge-ssl.xml |
1. 準備 server.crt 檔案並放到以下路徑 "D:\csvn\data\conf\server.crt"
openssl x509 -inform DER -in cert.der -out server.crt |
openssl.exe pkcs8 -in all-in-one.key -inform PEM -out server.key |
SSLCertificateChainFile "C:\csvn\data\conf\server.ca" |