我是一名开发人员。我们的服务器管理员给了我 3 个文件。.cer、.pfx 和 .p7b,并告诉我在 Apache 服务器中安装 SSL。我的 Wamp 版本是 Apache 2.4.9。我搜索了一下,找到了一些东西。我打开 httpd.conf 文件并搜索 DocumentRoot。在 DocumentRoot 之后,我添加了:
DocumentRoot "c:/wamp/www/"
SSLEngine on
SSLCertificateFile C:/Path/MyCer.cer
SSLCertificateKeyFile C:/Path/MyPfx.pfx
SSLCACertificateFile C:/Path/MyP7b.p7b
现在,当我重新启动 Apache 时。我甚至无法在 http 上导航服务器。当我注释掉以上几行时,我的网站可以在 http 上运行。
答案1
虽然这不完全是一个“问题”,而且您没有指定文件内的内容,但您至少做错了一件事:pfx 文件(假设这不是命名错误)不能直接用作 Apache 中的“密钥”。在不知道 cer 和 p7b 文件的内容的情况下,我们假设 pfx 包含我们需要的所有信息,并且您有 pfx 密码(您有,对吗?),然后从那里开始。
获取并安装适用于 Windows 的 OpenSSL(建议:https://indy.fulgan.com/SSL/如果你不愿意从源代码构建,那么已经预编译了二进制文件http://www.openssl.org/)
从 pfx 中提取 Apache 所需的不同文件(需要时系统会提示您输入 pfx 密码):
a. 从 pfx 中提取 SSL 证书私钥(加密)
C:\Path> openssl pkcs12 -in MyPfx.pfx -nocerts -nodes -out MyEncKey.key
b. 从 SSL 证书私钥中删除加密
C:\Path> openssl rsa -in MyEncKey.key -out MyKey.key
c.从 pfx 中提取 SSL 证书
C:\Path> openssl pkcs12 -in MyPfx.pfx -clcerts -nokeys -out MyCert.cer
d. 从 pfx 中提取(可能为空的)CA 证书链
C:\Path> openssl pkcs12 -in MyPfx.pfx -nodes -nokeys -cacerts -out MyCAs.crt
使用这些行而不是您自己的行来重建您的 httpd.conf(注意:如果 MyCAs.crt 不为空,则仅包含 SSLCACertificateFile 行;您可以使用任何文本编辑器检查它)
SSLCertificateFile C:/Path/MyCert.cer SSLCertificateKeyFile C:/Path/MyKey.key SSLCACertificate文件 C:/Path/MyCAs.crt
答案2
您的 SSL 证书将在 HTTPS 端口即 443 上运行,您需要将流量从 Http 重定向到 HTTPS,对于 Apache,您需要前往 MMC 放置您的证书,然后验证该证书。