將 SSL 證書移動到另一個 Apache 伺服器
我們只是將新的 Windows 機器設置為 Web 伺服器,並安裝**了帶有 openssl 的 Apache 2.2.19,**我們希望從舊的設置、Linux、Apache 2.2.3移動我們現有的 Web,包括 SSL 證書(Verisign) 。
現在,如果我在網上搜尋,我所能找到的就是將證書文件複製並粘貼到新伺服器上。但是,當我完成所有配置後,Apache 啟動失敗,錯誤日誌中沒有列印任何內容,只有提示說The Requested Operation has failed。
我嘗試執行
httpd.exe -e debug
並看到它停止,Loaded module ssl_module
並且這些行列印在 error.log 中:[Thu Aug 18 18:18:18 2011] [info] Init: Initialized OpenSSL library The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified.
從 Windows 事件查看器:
Faulting application httpd.exe, version 2.2.19.0, time stamp 0x4dd6eda8, faulting module libapr-1.dll, version 1.4.5.0, time stamp 0x4dd6ed65, exception code 0xc0000005, fault offset 0x0000fc39, process id 0xe08, application start time 0x01cc5b07b33b8a60.
我確定我正確配置了 crt 文件的路徑,因為如果我嘗試輸入錯誤的路徑,這就是我得到的:
[Thu Aug 18 18:13:35 2011] [debug] mod_so.c(246): loaded module ssl_module Syntax error on line 133 of C:/Apache2.2/conf/extra/httpd-ssl.conf: SSLCACertificateFile: file 'C:/Apache2.2/conf/ssla/intermediate.crt' does not exist or is empty
如果我使用自簽名證書,Apache 可以完美執行。可能出了什麼問題?
更新
正如@polynomial 在他的回答中所建議的那樣,使用 openssl verify 命令進行檢查:
> openssl verify /path/to/file.pem > error 20 at 0 depth lookup:unable to get local issuer certificate
openssl version -d
表明OPENSSLDIR: "/usr/local/ssl"
OPENSSLDIR是否導致錯誤?如果是,我該如何解決這個問題?
這已解決。
問題是密碼片語文件是為 linux 編寫的,所以它不能在 Windows 上執行。
我們還更新了證書文件以使用 Windows 行尾,但我不確定這是否有任何影響。
聽起來您擁有的證書可能已被刪除,或者您的 Windows 盒子上的 OpenSSL 安裝由於某種原因很難理解它。如果您嘗試使用 Windows 框上的 openssl 命令行驗證證書或從中提取資訊,它是否有效?
一些命令資訊:
http://www.madboa.com/geek/openssl/#verify-standard
具體檢查:
openssl verify /path/to/file.pem openssl x509 -text -in /path/to/cert.pem