我有* .example.com的SSL通配符证书,该证书对根域无效。我想在Ubuntu 14.04上使用Nginx
我设法通过下面复制的配置实现了1和2。
server {
#listen 80;
#isten 443;
return 404;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
#certificate and key referenced in common.conf
server_name www.example.com;
root /usr/share/nginx/html/example.com;
index index.php index.html index.htm;
include common/common.conf;
}
当我从上面的第二行和第三行删除注释标记时,希望仅为https://example.com返回404 - 没有任何作用。例如,我在Chrome中为https://www.example.com/和http://ww.example.com/获取了ERR_CONNECTION_CLOSED。
我应该怎么做才能一起实现1),2)和3)?
非常感谢。
答案 0 :(得分:1)
... * .example.com的通配符证书,对根域无效 ...仅在端口443上为根域返回404,例如如果reuqest是https://example.com
这是不可能的。使用https,HTTP响应在URL中的主机的已建立TLS连接内生成。因此,要返回404以访问https://example.com,您必须首先拥有经过验证的TLS连接。但由于example.com未包含在您的证书中,因此在尝试建立TLS连接时会收到验证错误,因此未成功建立TLS连接,并且无法在连接中返回404。