select基于域名的SSL证书,无需单独的VHost

我正在使用具有各种顶级域名的WordPress多站点networking。 我们目前正在为他们提供一台虚拟主机

<VirtualHost *:80> ServerName example.com ServerAlias * DocumentRoot /var/www/html/example.com/public </VirtualHost> 

随着Let's Encrypt今年晚些时候来临,我们希望为我们的客户提供免费的HTTPS。 使用这个服务,我们将能够自动获得每个域的证书。 我希望能够将Apacheconfiguration为在证书的特定文件夹中查找,以便在添加新证书时,我们的自动脚本不需要更改Apacheconfiguration。

 <VirtualHost *:443> DocumentRoot /var/www/html/example.com/public ServerName example.com ServerAlias * SSLEngine on # This line should find the cert that corresponds to the requested domain SSLCertificateFile /etc/pki/tls/certs/*.crt SSLCertificateKeyFile /etc/pki/tls/private/example_com.key SSLCertificateChainFile /etc/pki/tls/certs/example_com.ca-bundle </VirtualHost> 

可以将Apacheconfiguration为为所请求的域select正确的证书, 而不需要单独的虚拟主机或为每个虚拟主机configuration更改

如果需要的话,我们可以转换Apache版本或者安装一个知名的Apache模块。

我不能保证这样一个系统的安全性,因为除了安全的Apacheconfiguration之外,它还取决于服务器的安全性和自动化脚本的组合,但是它不会超出可能性的范围部署。

您需要使用服务器名称指示(SNI)configuration单独的虚拟主机。 你应该有一个默认的虚拟主机设置为catch-all,并设置协议支持(目前只有在默认虚拟主机中设置的协议用于整个站点)。 其他虚拟主机可以设置在单独的configuration文件中,并且可以在单独的私有密钥和证书的基础上进行设置。 如果您使用的是Unix服务器,则可以使用包含指向configuration文件的软链接的单个目录来帮助Apachefind它们。 您需要特别注意文件权限和目录结构。