一个IP地址和端口上的多个基于SSL名称的多个虚拟主机

时间:2018-03-26 09:49:30

标签: apache ubuntu ssl sni website-hosting

我想使用SNI在相同的IP和端口上配置ssl,或者可以是不同的端口,但我无法指示apache提供所请求域的ssl证书。

它提供默认站点证书。我无法调试此问题。

我访问日志时显示默认域名,但请求属于其他域名。

请问site1.com然后site1.com打开并发送site1.com,但是如果我问site2.con它会提供ssl of site1.com并且site2.com会重定向到site1.com

如果我添加       域名:443 代替       *:443 然后浏览器给出241重定向错误,如下所示

  

误导请求客户端需要为此请求建立新连接   因为请求的主机名与服务器名称指示不匹配   (SNI)用于此连接。

我正在/etc/apache2/ports.conf中侦听端口80和443 我已经安装了ssl mod       apt-get install libapache2-mod-ssl       a2enmod ssl

我正在使用ubuntu服务器bionic(18)与最新的apache2版本和openssl

我关注多个来源,但是这些链接没有解决我的问题

Digicert.com

memset.com

digitalocean.com

apache.org

Techrepublic

Tech-stuff.net

SSLStrictSNIVHostCheck on

<IfModule mod_ssl.c>

    <VirtualHost *:443>

            ServerAdmin admin@site1.com
            ServerName site1.com/
            ServerAlias www.site1.com/

            SSLEngine on
            SSLCertificateFile /etc/apache2/ssl/site1.com/certificate.crt
            SSLCertificateKeyFile /etc/apache2/ssl/site1.com/private.key
            SSLCertificateChainFile /etc/apache2/ssl/site1.com/ca_bundle.crt



            DocumentRoot /var/www/site1.com/public_html

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
</IfModule>




<VirtualHost *:80>

    ServerName site1.com

    ServerAlias www.site1.com

    DocumentRoot /var/www/site1.com/public_html

    Redirect permanent / https://site1.com/

</VirtualHost>


<IfModule mod_ssl.c>

    <VirtualHost *:443>

            ServerAdmin admin@site2.com
            ServerName site2.com/

            ServerAlias www.site2.com/

            SSLEngine on
            SSLCertificateFile /etc/apache2/ssl/site2.com/certificate.crt
            SSLCertificateKeyFile /etc/apache2/ssl/site2.com/private.key
            SSLCertificateChainFile /etc/apache2/ssl/site2.com/ca_bundle.crt



            DocumentRoot /var/www/site2.com/public_html

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
</IfModule>


< VirtualHost *:80>

    ServerName site2.com

    ServerAlias www.site2.com

    DocumentRoot /var/www/site2.com/public_html

    Redirect permanent / https://site2.com/

</VirtualHost>

1 个答案:

答案 0 :(得分:1)

为了正确配置您的apache服务器以使用相同的公共IP地址拥有多个SSL虚拟主机,您应该按照以下步骤操作:

编辑您的 httpd.conf apache2.conf 文件,并检查您是否有以下条目:

NameVirtualHost *:80
NameVirtualhost *:443

然后,对于所有虚拟主机,请替换

<VirtualHost *:80> with <VirtualHost YOUR_SERVER_PUBLIC_IP:80> 

<VirtualHost *:443> with <VirtualHost YOUR_SERVER_PUBLIC_IP:443>

重启apache,你应该好好去!

确保没有其他带有<VirtualHost *:443>定义的条目或配置文件。所有定义都应该容纳实际的服务器IP地址,否则你会遇到完全相同的问题。