我有基于名称的SSL(SNI)虚拟主机的Apache 2.4.10。 虚拟用户可以使用自己的证书并将其上传到服务器。
一切工作正常,直到证书文件(即文件丢失或错误的名称)有一些错误。
问题是如果有一些证书问题,Apache将不会启动。
有一些解决scheme如何启动Apache这个错误(即所有虚拟主机将启动,除了一个虚拟主机失败)?
这不起作用:
<If "-f '/path/to/file.crt'"> <VritualHost *:443> SSLEngine On SSLCertificateFile /path/to/file.crt </VirtualHost> </If>
…这也不起作用:
<VirtualHost *:443> <If "-f '/path/to/file.crt'"> SSLEngine On SSLCertificateFile /path/to/file.crt </If> </VirtualHost>
问题是configuration语法错误“SSLEngine不允许在这里”或“VirtualHost不允许在这里”。 所以我的configuration上面是不允许的Apache。
非常感谢。
编辑:小错字
我会说,这是devise工作。 SSL证书是一项安全function。 为什么你会允许在你的系统上损坏的证书,这可能会危及整个服务器?
正如您所提到的,用户可以上传他们的证书,您需要实现这些证书的检查function。 这些文件的有效性,正确的拼写和完整性应该由您的上传function来检查。
另外,apache发运了一个configuration检查器。
$SERVER/bin/apachectl configtest
有了这个function,你可以在重新启动前检查你的configuration文件,如果有任何错误,你不应该重新启动你的服务器。