我在nginx.conf中配置了ssl,如下所示,它工作正常:
server {
listen 8443 ssl;
ssl_certificate /usr/local/nginx/security/test.crt;
ssl_certificate_key /usr/local/nginx/security/test.key;
location / {
}
}但是上面配置的ssl证书不支持ie6,所以我申请了另一个组证书,但它将是灰色的锁,而不是绿色的锁。所以我只想对ie6使用新的组证书,对于其他浏览器,我仍然想使用旧的。我想如果有下面这样的代码就可以解决我的问题:
server {
listen 8443 ssl;
if ($http_user_agent ~ "MSIE 6.0" ) {
ssl_certificate /usr/local/nginx/security/test_ie6.crt;
ssl_certificate_key /usr/local/nginx/security/test_ie6.key;
}else{
ssl_certificate /usr/local/nginx/security/test.crt;
ssl_certificate_key /usr/local/nginx/security/test.key;
}
location / {
}
}发布于 2015-08-31 19:32:41
不可能以您预想的方式为不同的浏览器提供不同的证书。您尝试基于用户代理检测浏览器版本,但此信息仅在成功TLS握手后可用,即在证书已发送之后。
但是,如果多个服务器位于相同的IP地址之后,现代浏览器需要使用Server Name Indication来指示它们要连接到哪台服务器。较旧的浏览器,如XP上的IE 8.0和IE 6.0都不支持此扩展。因此,您可以在具有特定server_name (server_name example.com)的部分中为特定主机名(SNI)配置证书,然后在默认部分(server_name _)中为站点配置默认证书。支持SNI的浏览器将使用特定于名称的证书,而所有其他浏览器将回退到默认证书。
https://stackoverflow.com/questions/32310002
复制相似问题