我们刚刚设置了新的 Windows 机器作为 Web 服务器,带有 openssl 的 Apache 2.2.19安装后,我们想将现有的网站(包括 SSL 证书 (Verisign))从旧设置中移出,Linux,Apache 2.2.3。
现在,如果我在线搜索,我所能找到的就是将证书文件复制并粘贴到新服务器。但是当我完成所有配置后,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.
我确信我正确配置了 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"
做开放源码目录导致错误?如果是,我该如何解决?
答案1
这个问题已经解决。
问题在于密码文件是为 Linux 编写的,因此它无法在 Windows 上运行。
我们还更新了证书文件以使用 Windows 行尾,但我不确定这是否有任何效果。
答案2
听起来,也许您拥有的证书被弄乱了,或者由于某种原因,安装在 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
答案3
SSL 证书是为特定地址的特定服务器生成的,您不能将其从一台服务器复制到另一台服务器(即使 IP 地址相同)
您的路径和设置可能是正确的 [因此您的自签名证书可以正常工作]。您需要做的是生成新的 CSR,联系您的 SSL 证书提供商并颁发新证书,通常您无需为此付费。
-肖恩