Aja*_*ngh 6 linux ssl debian nginx
我最近在 debian 8 上创建了一个 nginx 服务器。它在 /etc/nginx/sites-available/default 上提供了一个默认配置,它重定向到一个 nginx 欢迎页面。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的生产页面,比如“example.com”,上面有 ssl。
在 ../example.com 的配置中,它没有设置为默认服务器。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
....
Run Code Online (Sandbox Code Playgroud)
现在,当我在https://www.ssllabs.com/ssltest/analyze.html?d=example.com上进行 ssl security 测试时,它获得了 A+。但它评论了“不一致的服务器配置”。
当我加载 ip 地址时,在浏览器上说 xxxx 作为 https:// xxxx 它加载与https://example.com相同的页面,但上面没有 ssl(绿色地址栏)。如果我加载 http:// xxxx,它会加载默认的 nginx 欢迎页面。
我尝试设置默认配置(用于 ip)以获取禁止消息,我添加了以下代码
location / {
deny all;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我对 example.com 进行 ssl 安全测试时,它显示“不支持安全协议”并且没有出现测试结果。
所以我的问题是,
应该如何处理 nginx 附带的默认配置,它会为 IP 地址加载?
哪个 server_name(配置文件)应该设置为“listen”命令中的 default_server?
应该如何处理当前将 https 请求转发到示例域的 IP?
预期结果:-
https://example.com 只应该用于连接到服务器并且加载 ip 地址可以显示“页面未找到”或“禁止”,因为 example.com 将用于其上的 php 脚本。
SSL 测试应在设置配置后至少给出 A 评级。
ip 地址不应直接接受任何连接并对其进行处理。
小智 6
您可以使用“ssl_reject_handshake on”拒绝 SSL 连接。就像“return 444”来关闭连接一样。
# HTTP:80 = catch-all server block, resulting in a 444 response for unknown domains.
# HTTPS:443 = catch-all server block, resulting in reject SSL connection for unknown domains.
server {
listen 80 default_server;
listen [::]:80 ipv6only=on default_server;
server_name "_";
return 444; # Connection closed without response
}
server {
listen 443 default_server;
listen [::]:443 ipv6only=on default_server;
server_name "_";
ssl_reject_handshake on; # Reject SSL connection
}
Run Code Online (Sandbox Code Playgroud)
您可以将其作为默认服务器块:
server {
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
... SSL keys for default server ...
return 403;
}
Run Code Online (Sandbox Code Playgroud)
这将导致 Host: 标头与服务器上任何其他虚拟主机不匹配的任何 HTTP 连接向客户端返回 403 Forbidden 错误消息。
如果您在此处对与任何现有主机名都不匹配的主机名使用有效的 SSL 密钥,客户端将直接获得 403 错误页面。如果您在此处使用自签名证书,那么用户将收到不受信任的证书错误消息。
| 归档时间: |
|
| 查看次数: |
22729 次 |
| 最近记录: |