NGINX 上的 SSL 终止

标签 ssl nginx

我已经购买了 SSL 证书并将其正确捆绑,因为当我验证模数(即 https://kb.wisc.edu/middleware/4064 )时,哈希值是相同的。

我已将证书和 key 移动到我的服务器 @/etc/ssl 并确保文件夹权限为 700,每个文件为 600。

然后我有以下 nginx 配置:

server {
    listen   80;
    listen   443 ;
    server_name escapehatch.chrisjowen.uk;
    ssl    on;
    ssl_certificate    /etc/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/secret.txt;
    access_log /var/log/nginx/nginx.vhost.access.log;
    error_log /var/log/nginx/nginx.vhost.error.log;

    location / {
        proxy_pass http://localhost:8080;
    }
}

最后,为了对此进行测试,我在端口 8080 上运行了一个 Python SimpleHTTPServer。当我在 HTTPS 上访问 URL 时,我收到一个错误

This site can’t provide a secure connection

查看来自 Python 服务器的日志,我看到:

218.186.183.142 - - [21/Aug/2019 04:45:53] code 400, message Bad HTTP/0.9 request type ('\x16\x03\x01\x02\x00\x01\x00\x01\xfc\x03\x03\x01a\x96\x061LE\x88I\xf1i\x7f\xc3\xdc%d\x18r\xbbzq9q<\xeb\x1dD\xa3\x8b\x01\x10\x7f')
218.186.183.142 - - [21/Aug/2019 04:45:53] "�a�1LE�I�i��%dr�zq9q<�D�� n��Z���΀��SN�F���j;X.Zw�s^�"**�+�/�,�0̨̩����/5" 400 -
218.186.183.142 - - [21/Aug/2019 04:45:53] code 400, message Bad request version ('\x0fb\x03g\x8d\x04\x8b\xbe!\xad\x98W\x9bV\xd2\x8e\x1e\xc6\xf3\xaa\xff\xce\x0f\x1b\xc9\x0f\xebY\xae\xc4\x00"\xfa\xfa\x13\x01\x13\x02\x13\x03\xc0+\xc0/\xc0,\xc00\xcc\xa9\xcc\xa8\xc0\x13\xc0\x14\x00\x9c\x00\x9d\x00/\x005\x00')

所以,nginx 似乎没有解密请求并终止 SSL 连接,而是将它传递给上游服务器,这是我不希望的。

检查 nginx 日志/var/log/nginx/nginx.vhost.access.log 没有任何显示。

所以,现在我不知道如何调试这个问题,似乎 nginx 配置有误或证书有问题,但如前所述,我使用以下方法检查了这个 https://kb.wisc.edu/middleware/4064

最佳答案

listen   80;
listen   443 ;

如果您希望它在端口 80 上监听纯 http,在端口 443 上监听 https,则第二行应该是 listen 443 ssl;

ssl    on;

来自 the documentation :

This directive was made obsolete in version 1.15.0. The ssl parameter of the listen directive should be used instead.

此外,您的 Python 服务器的日志中还有以下内容:

218.186.183.142 - - [21/Aug/2019 04:45:53] code 400, ....

这个Python服务器显然是通过外部IP地址直接访问的。如果请求将由本地 nginx 转发,那么源 IP 应该是 127.0.0.1。这表明,您根本没有访问 nginx,而是以某种方式直接向 Python 服务器发出请求。

关于NGINX 上的 SSL 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57583874/

相关文章:

ssl - 开箱即用地使用 SPDY 运行 Jetty

ubuntu - 在 ubuntu 18.04.3 nginx 上设置 SSL

nginx - Rstudio和 Shiny 的服务器代理设置

linux - 如何在嵌入式设备上的文件系统中更新/安装新软件包?

amazon-web-services - Elastic Beanstalk上的Docker-连接到上游时connect()失败(111:连接被拒绝)

docker - Docker编写Nginx,Express,Lakeencrypt SSL获得502 Bad gateway

java - 用户证书身份验证无法正常工作的 HTTPS Apache CXF 上的 Soap

PHP imap_open() => [AUTHENTICATIONFAILED] for imap.gmail.com

node.js - NodeJS HTTP/2 ERR_CONNECTION_REFUSED

macos - 如何在 Mac OS 上设置 Nginx 日志文件的限制?