子域名上的 SSL

子域名上的 SSL

我正在尝试配置通配符 SSL 证书,以便在服务器的子域和主域上提供服务。为了使 SSL 证书正常工作,似乎我必须定义主站点的 sites-available 文件,如下所示:

<VirtualHost *:443>

当我尝试使用<VirtualHost someSite.com:443>时 Firefox 会抱怨:

An error occurred during a connection to www.someSite.com.

SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)
The page you are trying to view cannot be shown because the authenticity of the received data could not be verified.

Google Chrome 则没有那么具体:

SSL connection error

我可以进行哪些更改<VirtualHost *:443>以便我可以将 sub.someSite.com 作为具有 SSL 的不同虚拟主机来提供服务?

这是在 Ubuntu Server 12.04 LTS(3.2 内核)上,带有 Apache 2.2.22 和 Godaddy SSL 证书。

编辑:: 这里是Apache 站点启用域的文件

<IfModule mod_ssl.c>
#<VirtualHost *:443>           # With this line, the site serves fine
<VirtualHost someSite.com:443> # With this line, browsers throw the error
        DocumentRoot /var/www/someSite/public_html

        ServerName someSite.com
        ServerAlias www.someSite.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/someSite/public_html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl/someSite.com.crt
        SSLCertificateKeyFile /etc/apache2/ssl/someSite.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

答案1

Apache 建议不要<VirtualHost>在指令中使用主机名各种原因

最佳做法是在和指令中指定虚拟主机的 IP 地址*或主机<VirtualHost>名。ServerNameServerAlias

因此要解决这个问题:

  • 如果您希望所有通配符子域名都由现有虚拟主机提供服务,请将ServerAlias *.example.com其添加到其中。
  • 如果您希望所有通配符子域名都由完全不同的虚拟主机提供服务,请添加一个<VirtualHost>带有ServerName something.example.com和 的新块ServerAlias *.example.com

相关内容