1

我有一个 CentOS/Apache+OpenSSL 服务器。我托管两个带有通配符子域的域名(应用程序逻辑显示正确的站点),例如

https://*.testing1.com

https://*.testing2.com

它在 HTTP 上运行良好:-

   <VirtualHost *:80>
  # Admin email, Server Name (domain name) and any aliases
  ServerAdmin webmaster@testing1.com
  ServerName  testing1.com
  ServerName  testing2.com

  ServerAlias *.testing1.com *.testing2.com

  # Index file and Document Root (where the public files are located)
  DirectoryIndex index.html index.php
  DocumentRoot /home/app/public_html/public

</VirtualHost>

我已经为 testing1.com 和 testing2.com 购买了两个通配符 SSL 证书,但我不确定如何在这个结构中设置它:-

    <VirtualHost *.testing1.com:443>
     SSLEngine On
     SSLCertificateFile /etc/httpd/ssl/*.testing1.com.crt
     SSLCertificateKeyFile /etc/httpd/ssl/*.testing1.com.key
     SSLCACertificateFile /etc/httpd/ssl/geotrust.cer

     ServerAdmin john@testing1.com
     ServerName testing1.com
     ServerAlias *.testing1.com

        DirectoryIndex index.html index.php
        DocumentRoot /home/app/public_html/public

  </VirtualHost>

   <VirtualHost *.testing2.com:443>
     SSLEngine On
     SSLCertificateFile /etc/httpd/ssl/*.testing2.com.crt
     SSLCertificateKeyFile /etc/httpd/ssl/*.testing2.com.key
     SSLCACertificateFile /etc/httpd/ssl/geotrust.cer

     ServerAdmin john@testing2.com
     ServerName testing2.com
     ServerAlias *.testing2.com

        DirectoryIndex index.html index.php
        DocumentRoot /home/app/public_html/public

  </VirtualHost>

SSL 的上述内容不适用于 *.testing1.com 定义,也不适用于 testing1.com。

我还需要为 testing2.com 重复此操作

4

2 回答 2

3

基于名称的虚拟主机和 SSL 仅在所有虚拟主机都在同一个域中并且您拥有该域的通配符 SSL 证书时才有效。

但是您有 2 个不同的域。

在这种情况下,只有为每个启用 SSL 的虚拟主机提供它自己的 IP 地址,它才会起作用。所以你应该使用基于 IP 的虚拟主机,而不是基于名称的。

说明:所请求的 ServerName 包含在 HTTP 请求标头中,但在此之前必须已设置 SSL 加密。因此,ServerName 仅在设置加密后可用。因此,Apache 永远无法知道您提供了哪个 SSL 证书,而只会使用该特定 IP 地址上可用的第一个证书。

于 2012-11-10T22:32:28.800 回答
0

使用单个专用 IP,我们可以在 centos + apache2.2 服务器中配置基于域的通配符 SSL。

希望下面的配置对大家有帮助!!

NameVirtualHost IP:80
NameVirtualHost IP:443

域 1

<VirtualHost IP:80>
        ServerName      abc.domain1.com
        DocumentRoot    /var/www/html/domain1
</VirtualHost>
<VirtualHost IP:443>
        ServerName      *.domain1.com
        DocumentRoot    /var/www/html/domain1
        SSLEngine       On
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile      /var/www/html/domain1/cert/5465456.crt
        SSLCertificateKeyFile   /var/www/html/domain1/cert/domain1.com.key
        SSLCertificateChainFile /var/www/html/domain1/cert/g2-g1.crt
</VirtualHost>

域 2

<VirtualHost IP:80>
        ServerName      abc.domain2.com
        DocumentRoot    /var/www/html/domain2
</VirtualHost>
<VirtualHost IP:443>
        ServerName      abc.domain2.com
        DocumentRoot    /var/www/html/domain2
        SSLEngine       On
        SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile      /var/www/html/domain2/cert/5465456.crt
        SSLCertificateKeyFile   /var/www/html/domain2/cert/domain1.com.key
        SSLCertificateChainFile /var/www/html/domain2/cert/g2-g1.crt
</VirtualHost>
于 2018-04-09T04:52:28.130 回答