因此,我已经购买了SSL证书并将其正确捆绑在一起,以至于我验证模数(即https://kb.wisc.edu/middleware/4064)时散列都相同。
我已将证书和密钥移到我的服务器@ / 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 config错误或证书有问题,但是如上所述,我使用以下方法https://kb.wisc.edu/middleware/4064
任何帮助,克里斯,克里斯。
答案 0 :(得分:0)
listen 80; listen 443 ;
如果您希望它在端口80上侦听纯http,在端口443上侦听https,则第二行应为listen 443 ssl;
。
ssl on;
此指令在1.15.0版中已作废。应该改用listen指令的ssl参数。
您的Python服务器日志中还包含以下内容:
218.186.183.142 - - [21/Aug/2019 04:45:53] code 400, ....
很明显,外部IP地址可以直接访问此Python服务器。如果请求将由本地nginx转发,则源IP应该改为127.0.0.1。这表明您根本不打nginx,而是以某种方式直接向Python服务器发出请求。