【问题标题】:Multiple SSL Namebased Multiple Virtual host on one ip address and Port一个 IP 地址和端口上的多个 SSL 基于名称的多个虚拟主机
【发布时间】:2018-03-26 09:49:29
【问题描述】:

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

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

我访问日志它显示默认域名但是请求是其他域的..

例如,我询问 site1.com,然后 site1.com 打开并提供 site1.com,但是如果我询问 site2.con,它提供 site1.com 的 ssl,并且 site2.com 被重定向到 site1.com

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

Misdirected Request 客户端需要一个新的连接来处理这个请求 因为请求的主机名与服务器名称指示不匹配 (SNI) 正在用于此连接。

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

我正在使用具有最新 apache2 版本和 openssl 的 ubuntu 服务器仿生 (18)

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

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>

【问题讨论】:

    标签: apache ubuntu ssl sni website-hosting


    【解决方案1】:

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

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

    NameVirtualHost *:80
    NameVirtualhost *:443
    

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

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

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

    重启 apache 就可以了!

    确保没有其他具有&lt;VirtualHost *:443&gt; 定义的条目或配置文件。所有定义都应包含实际的服务器 IP 地址,否则您将遇到完全相同的问题。

    【讨论】:

    • 我试过了。我什至尝试使用域名而不是 *.它提供默认证书。
    • 你在某处有一个配置问题,或者一个用 *:443 定义的虚拟主机和其他用 ip 地址等定义的主机......它应该可以工作,因为它在我的 CentOS 7.x 上工作得很好带有 httpd 的服务器。在&lt;VirtualHost&gt; 部分,定义是ip:port,而不是domain:port
    • 或者,将NameVirtualHost *:80NameVirtualHost *:443分别替换为NameVirtualHost public_IP:80NameVirtualHost public_IP:443并重启httpd/apache2服务
    • 如果无法检查配置并查看服务器上发生的情况,这真的很难说...对不起,我无法为您提供更多帮助...这绝对是一个配置问题,因为正如我所说,它在我的服务器上工作得很好
    • 非常感谢您的帮助。我猜我做错了。我将所有配置转移到一个 .conf 文件中,顺序依次为所有端口 80 和端口 443。它工作正常。再次感谢。
    猜你喜欢
    • 2015-12-07
    • 2014-08-07
    • 1970-01-01
    • 2018-05-26
    • 2012-07-28
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2016-05-02
    相关资源
    最近更新 更多