use*_*419 2 ssl redirect google-chrome nginx
我有example.com的有效证书.如果用户访问我的网站http://example.com,他们会被重定向到https://example.com,一切都很好.如果他们访问https://example.com,一切都很好.如果他们甚至访问http://www.example.com,他们会被重定向到https://example.com,一切都很好.
但是,如果他们访问https ://www.example.com,Chrome会在我重定向之前触发其SSL警告,并告知用户不信任此网站.我在Safari或Firefox中没有这个问题.
这是我的nginx配置.我究竟做错了什么?
```
# Configuration for redirecting non-ssl to ssl;
server {
listen *:80;
listen [::]:80;
server_name example.com;
return 301 https://example.com$request_uri;
}
# Configuration for redirecting www to non-www;
server {
server_name www.example.com;
ssl_certificate ssl/ssl_cert.crt;
ssl_certificate_key ssl/ssl_key.key;
listen *:80;
listen *:443 ssl spdy;
listen [::]:80 ipv6only=on;
listen [::]:443 ssl spdy ipv6only=on;
return 301 https://example.com$request_uri;
}
server {
listen *:443 ssl spdy;
listen [::]:443 ssl spdy;
ssl_certificate ssl/ssl_cert.crt;
ssl_certificate_key ssl/ssl_key.key;
server_name example.com;
}
Run Code Online (Sandbox Code Playgroud)
```
编辑:我看到这是一个有问题的配置,因为第二个块将查看证书.使用从"example.com"而不是"www.example.com"读取的证书来设置它的正确方法是什么?
如果您的证书仅适用于example.com而不适用于www.example.com,则无论您是否只想重定向,任何对www.example.com的访问都会触发证书警告.重定向在HTTP级别完成,在它与HTTP通信之前,它首先进行SSL握手(这会触发问题),因为HTTPS只是SSL内部的HTTP.
在您提出要求之前,使用DNS(如CNAME)的技巧也无济于事,因为浏览器会将证书与URL中的名称进行比较,而不是与可能的DNS别名进行比较.没有办法获得适当的证书.
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |