APACHE & NGINX - vhost - ERR_SSL_PROTOCOL_ERROR仅适用于Google Chrome

u5i3ibmn  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(143)

Vhost/server看到SSL证书上有一些冲突,并仅在Chrome浏览器上产生错误“ERR_SSL_PROTOCOL_ERROR”。我在Apache 2和Nginx上尝试了很多配置
我有1个serveur(ipv4)和2个子域(vhost)指向此服务器(domain1.dns.fr和domain2.dns.fr)
几周前,谷歌Chrome只在一个子域(domain2.dns.fr)上返回SSL错误“ERR_SSL_PROTOCOL_ERROR”。
此错误仅适用于Google Chrome(Firefox,Edge测试成功)。
我试图改变与Apache和Nginx的Vhost配置,但我有同样的错误。
非常奇怪的情况是:如果我颠倒了vhost声明的顺序,domain2.dns.fr工作,但domain1.dns.fr停止工作(同样的错误:ERR_SSL_PROTOCOL_ERROR)。请参见本用例的以下给定配置。
所以,我不确定问题来自Frontal应用程序。(这不是浏览器缓存器的问题;- ))但我没有发现问题。

  • 技术堆栈:
  • 操作系统:Ubuntu 14.10
  • 使用Apache测试:Apache/2.4.10
  • 使用Nginx:nginx/1.6.2
  • APACHE测试-配置
<VirtualHost domain1.dns.fr:443>
        
        ServerName domain1.dns.fr
        
        ProxyPass / http://localhost:8080/
        
        SSLEngine on
        SSLProtocol -all +TLSv1.2
        SSLCertificateFile /root/.acme.sh/domain1.dns.fr/domain1.dns.fr.cer
        SSLCertificateChainFile /root/.acme.sh/domain1.dns.fr/ca.cer
        SSLCertificateKeyFile /root/.acme.sh/domain1.dns.fr/domain1.dns.fr.key
        
</VirtualHost>

<VirtualHost domain2.dns.fr:443>
        
        ServerName domain2.dns.fr
        
        DocumentRoot /var/www/domain2.dns.fr/public
        <Directory /var/www/domain2.dns.fr/public>
            Require all granted
            Options -Indexes +FollowSymLinks
            AllowOverride all
        </Directory>    
            
        SSLEngine on
        SSLCertificateFile /root/.acme.sh/domain2.dns.fr/domain2.dns.fr.cer
        SSLCertificateChainFile /root/.acme.sh/domain2.dns.fr/ca.cer
        SSLCertificateKeyFile /root/.acme.sh/domain2.dns.frdomain2.dns.fr.key
        
</VirtualHost>
  • APACHE测试-配置
server {
    listen *:443 ssl;
    server_name domain1.dns.fr;
    charset utf-8;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   off;
    }

    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 60m;
    ssl_prefer_server_ciphers on;
    ssl_certificate /root/.acme.sh/domain1.dns.fr/domain1.dns.fr.cer;
    ssl_certificate_key /root/.acme.sh/domain1.dns.fr/domain1.dns.fr.key;
}

server {
    listen *:443 ssl http2;
    server_name domain2.dns.fr;
    charset utf-8;
     
    location / {
        # redirect on apache instance reconfigured on port 7000 for test without php-fpm installation
        proxy_pass http://localhost:7000;
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-for $remote_addr;
        port_in_redirect off;
        proxy_redirect   off;
    }
    
    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 60m;
    ssl_prefer_server_ciphers on;
    ssl_certificate /root/.acme.sh/domain2.dns.fr/domain2.dns.fr.cer;
    ssl_certificate_key /root/.acme.sh/domain2.dns.fr/domain2.dns.fr.key;
}
  • 配置/etc/hosts
127.0.0.1       localhost
151.80.129.173  vpsXXXXX.ovh.net       vpsXXXXX
  • DNS区域配置
domain1.dns.fr -> TLS 0 -> A -> XXX.XXX.XX.XX
domain2.dns.fr -> TLS 0 -> A -> XXX.XXX.XX.XX

注意:如果我尝试对服务器名绑定不那么严格,当客户端咨询domain1.dns.fr时domain2.dns.fr的SSL证书会在浏览器中返回(...)。
你有什么想法/解决方案吗?

xam8gpfp

xam8gpfp1#

我不确定这是不是你的案子...但几天前,我也遇到了类似的麻烦。我在Centos的Nginx/Apache/Openssl环境中有几个网站。Nginx是1.4.4,OpenSSL是1.0.1e。是的,很老的。因此,显然所有网站,除了一个,位于第一次在Nginx的conf文件,停止显示在Android的Chrome由于一些SSL证书问题。错误就像你的一样,“ERR_SSL_PROTOCOL_ERROR”。iOS/Windows Chrome还可以。iOS/Android/Windows上的所有其他浏览器也都没问题。通过调查,我发现我的任何一个网站首先位于Nginx的conf文件中,开始在Android的Chrome中工作,但只有第一个。由于麻烦是奇怪的,只出现在一个浏览器完全在一个操作系统,最后我没有更好的主意比试图升级的东西.首先,我把Nginx升级到最新的稳定版,我相信是1.24。这没有意义,麻烦就在那里。在那之后,我升级OpenSSL到最新版本的1.0.1分支,1.0.1u IIRC。这终于让我高兴起来,一切又开始顺利了。谢谢你的长途跋涉。

相关问题