Nginx SSL配置在移动浏览器上不起作用

时间:2019-03-15 17:30:45

标签: ssl nginx mobile https

我已经设置了一个服务于ssl的Nginx服务器,其中http服务器块重定向到了安全服务器块。该证书由我的域提供商(1&1)颁发。在大多数台式机浏览器上都可以很好地工作,但是在移动设备上的Firefox上获得SSL_ERROR_INTERNAL_ERROR_ALERT,在Chrome移动设备上(Android Pie)获得ERR_SSL_PROTOCOL_ERROR。

这是nginx的配置:

server {
         listen 80 deferred;
         listen [::]:80 deferred;
         server_name meetoko.com www.meetoko.com;

         return 301 https://meetoko.com$request_uri;
 }


server {

         listen 443 ssl;
         listen [::]:443 ssl;

        ssl on;
        ssl_certificate                 /etc/ssl/meetoko.com.pem;
        ssl_certificate_key             /etc/ssl/meetoko.com.key;

        root /var/www/html;
        
        server_name meetoko.com;
        server_name  www.meetoko.com;
        try_files $uri $uri/ /index.html;

        location / {
                try_files $uri $uri/ /index.html;
        }

        location /api/ {
                proxy_pass http://localhost:3000;
                proxy_http_version 1.1;
        }


        location /public/ {
                alias /root/oko-back/public/;
        }
}

                                                                                  

.pem密钥是主证书和中间证书的串联,而.key是私钥。

在手机和台式机上都使用HTTPS之前,所有设备都运行良好,因此很难弄清楚什么地方出了错...有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

该站点的配置不一致as shown by SSLLabs。尽管它具有IPv6地址,但已为IPv4正确配置,但未为IPv6配置。

我的猜测是,经过测试的桌面环境仅是IPv4(至少在Internet访问方面),因此不会出现问题。相反,移动环境支持IPv6,在这种情况下,IPv6是首选协议。只是,由于配置不完整,使用IPv6访问站点失败。

答案 1 :(得分:0)

尝试在配置中设置此选项:

ssl_verify_client optional_no_ca;

ssl_verify_client

ssl_verify_client optionalon时 nginx服务器要求客户端(移动浏览器)向证书提供受信任的CA。几种固件没有受信任的CA颁发和签名的客户端证书。

optional_no_ca参数(1.3.8,1.2.5)请求客户端 证书,但不需要由受信任的CA签名 证书。

但是,即使使用这些设置,移动Opera浏览器也不起作用。 Opera仍然要求用户提供证书。因此,要停止打扰客户端ssl_verify_client的设置,应该是:

ssl_verify_client off;