我已经设置了一个服务于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之前,所有设备都运行良好,因此很难弄清楚什么地方出了错...有什么想法吗?
谢谢!
答案 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 optional
或on
时
nginx服务器要求客户端(移动浏览器)向证书提供受信任的CA。几种固件没有受信任的CA颁发和签名的客户端证书。
optional_no_ca
参数(1.3.8,1.2.5)请求客户端 证书,但不需要由受信任的CA签名 证书。
但是,即使使用这些设置,移动Opera浏览器也不起作用。 Opera仍然要求用户提供证书。因此,要停止打扰客户端ssl_verify_client
的设置,应该是:
ssl_verify_client off;