生成自签名证书后 Apache 无法启动

Posted

技术标签:

【中文标题】生成自签名证书后 Apache 无法启动【英文标题】:Apache Won't Start After Generating Self Signed Cert 【发布时间】:2016-07-11 12:55:21 【问题描述】:

Apache 无法启动,出现错误...

1:08:52 a.m.  [Apache]  Error: Apache shutdown unexpectedly.
1:08:52 a.m.  [Apache]  This may be due to a blocked port, missing dependencies, 
1:08:52 a.m.  [Apache]  improper privileges, a crash, or a shutdown by another method.
1:08:52 a.m.  [Apache]  Press the Logs button to view error logs and check
1:08:52 a.m.  [Apache]  the Windows Event Viewer for more clues
1:08:52 a.m.  [Apache]  If you need more help, copy and post this
1:08:52 a.m.  [Apache]  entire log window on the forums

在我按照these instructions 生成自签名证书之前,Apache 正在工作。我还使用端口 443 重定向更新了虚拟主机文件。

Apache 日志没有告诉我任何有用的信息,因为在尝试启动 Apache 时不会生成错误。我检查了 netstat,443 上什么都没有。

编辑:我通过注释掉重新启动了服务器

# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf

所以我的 SSL 配置中的某些东西导致它无法启动。据我所知,我已经在 SSL 配置中正确设置了证书和密钥文件。

编辑 2:运行 httpd -t 我收到错误 SSLCertificateFile: file 'C:/my/xampp/location/apache/conf/ssl.crt/server.crt' does not exist or is empty

果然我创建的crt文件是空的!关键文件不是。我会尝试重新创建它。

编辑 3:好的,我重新创建了 .crt 和密钥文件,它们都有内容。 conf 语法通过,但 Apache 不会启动。我现在可以看到一个错误:Certificate and private key www.example.com:443:0 from /conf/ssl.crt/server.crt and /conf/ssl.key/server.key do not match AH00016: Configuration Failed

在设置证书时,我是否必须具有通用名称,与服务器名称完全匹配?即如果虚拟主机中的服务器名称是 www.example.com:443,我是否必须在完全限定的域 URL 公用名中包含端口?

编辑 4:现在我的配置看起来不错,我尝试了 different tutorial,证书似乎还可以,但我收到错误 described here。 openssl x509 -in my.crt -text 表示证书末尾有一个奇数大小的块。我不明白新生成的证书是如何损坏的。我错过了什么吗?

背景是我在尝试设置 Let's Encrypt 为我的 Win XAMPP 服务器生成可移植 SSL 证书时出错(我在 Ubuntu 机器上执行此操作,因为在那里使用客户端更容易)。但我得到了“Correct zName not found for TLS SNI challenge”。其中一个建议是先拥有一个自签名证书。这导致我尝试上述方法。

【问题讨论】:

Sheldon,这就像你在告诉我不知道答案。我想说几个小时研究和尝试不同的建议远非猜测。这是我第一次尝试实现 SSL,但对我来说并不容易。 【参考方案1】:

愚蠢的错误。我的密钥文件与 crt 文件位于同一目录中

在默认配置中,我没有意识到每个文件都有自己的目录

配置文件 conf/ssl.crt/ 中的目录看起来很像 conf/ssl.key/

将密钥放在它自己的目录中(在删除已经存在的密钥之后)修复它。

奇怪的是,我查看的教程将文件放在同一个目录中。我认为这并不重要,只要您正确链接它们即可。

【讨论】:

以上是关于生成自签名证书后 Apache 无法启动的主要内容,如果未能解决你的问题,请参考以下文章

什么是自签名SSL证书?

linux apache ssl自签名数字证书可以用于公网吗

android 生成签名证书

在 aws 弹性负载均衡器上无法让 https 使用自签名证书

Apache 反向代理背后的自签名证书问题?

由于自签名证书,Jenkins 无法部署