我们只是将新的Windows机器设置为Web服务器,安装了Apache 2.2.19,并且安装了openssl ,我们希望将现有的包括SSL证书(Verisign)的Web从旧的设置Linux,Apache 2.2.3中移出。
现在,如果我在网上search,我所能find的就是将证书文件复制并粘贴到新的服务器上。 但是当我完成了所有的configuration之后,Apache无法打印错误日志中的任何内容,只有提示“请求操作失败” 。
我试图运行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.
我敢肯定,我正确地configuration了path到crt文件,因为这是我得到的,如果我试图把一个错误的path:
[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将完美运行。 什么可能会出错?
UPDATE
检查使用opensslvalidation命令@polynomialbuild议在他的答案:
> 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是否导致错误? 如果是,我该如何解决?
这已经解决了。
问题是pass-phrase文件是为linux编写的,所以它不能在windows上运行。
我们还更新了证书文件以使用Windows行结束,但我不确定这是否有任何效果。
这听起来可能是你所拥有的证书已经被清除了,或者你的Windows系统上的OpenSSL安装由于某种原因而难以理解。 如果您尝试validation证书或从窗口中使用openssl命令行提取信息,它是否工作?
一些命令信息:
http://www.madboa.com/geek/openssl/#verify-standard
具体检查:
openssl verify /path/to/file.pem openssl x509 -text -in /path/to/cert.pem
为特定地址的特定服务器生成SSL证书,不能将其从一台服务器复制到另一台服务器(即使IP地址相同)
你的path和设置可能是正确的[因此你的自签名证书工作]。 你需要做的是生成一个新的CSR,联系你的SSL证书提供商,并发布新的证书,通常你不必为此付费。
-Sean