我已经使用Let's Encrypt
创建了SSL证书,现在尝试使用NginX进行设置。 NginX占用了我的配置,可以重新启动并很好地处理HTTP,但是拒绝HTTPS连接。
此外,我的服务器没有防火墙。我用netstat -peanut | grep ":443 "
和NMap检查了端口443,没有问题。
我有以下SSL文件:
ca bundle.crt
,第27行,以-----BEGIN CERTIFICATE-----
ca.crt
,共35行,以-----BEGIN CERTIFICATE-----
private_rsa.key
,第27行,以-----BEGIN RSA PRIVATE KEY-----
private.key
,共28行,以-----BEGIN PRIVATE KEY-----
我不知道哪些是重要的,所以我尝试了所有组合,但是没有任何效果。这是我的NginX配置:
server {
listen 80;
listen 443 ssl;
server_name domain.ru www.domain.ru;
ssl_certificate /var/www/SSL/ca.crt;
ssl_certificate_key /var/www/SSL/private.key;
access_log /var/www/Ret/Returner/logs/nginx.access.log;
error_log /var/www/Ret/Returner/logs/nginx.error.log;
proxy_read_timeout 950s;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/Ret/Returner/;
}
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
如何解决该问题?
我的操作系统是Ubuntu 16.04。 NginX版本:1.10.3内置OpenSSL 1.0.2g,已启用TLS SNI支持。
更新。
为了生成证书,我使用了两种不同的方法:
使用具有DNS所有权批准的www.sslforfree.com。
使用以下OpenSSL命令:
openssl genrsa 4096 > /var/www/Ret/account.key
openssl rsa -in /var/www/Ret/account.key -pubout
不幸的是,两个证书文件集均无效。
答案 0 :(得分:0)
我个人不喜欢在同一server
部分中包含80和443。
我也不确定这是否是一个问题。但是你可以尝试这样的事情吗?
# Redirect all http to https
server {
listen 80 default_server;
rewrite ^ https://$host$request_uri? permanent;
}
# Handle https
server {
server_name domain.ru www.domain.ru;
listen 443 ssl http2;
# Certificates
ssl_certificate /var/www/SSL/ca.crt;
ssl_certificate_key /var/www/SSL/private.key;
# Logs
access_log /var/www/Ret/Returner/logs/nginx.access.log;
error_log /var/www/Ret/Returner/logs/nginx.error.log;
proxy_read_timeout 950s;
# Static Content
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /var/www/Ret/Returner/;
}
# Reverse Proxy
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
答案 1 :(得分:0)
我找到了解决方案。这是关于创建$(document).ready(function() {
$('.pole').change('input', function() {
var val = $(this).val();
});
});
的过程,其中应包含证书和CA捆绑软件的数据。它的结构很简单,如下所示:
ca_chain.crt
然后,在NginX配置中:
-----BEGIN CERTIFICATE-----
MIIFXTCCBEWgAwIBAgISA1jUznaa6AUn/4wyOV49e1QBMA0GCSqGSIb3DQEBCwUA
// content of the ca.crt //
2PxVU6WNy9wOVgGdO5TaxRQgO2p04AYJpovREYCuOctz
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
// content of the ca_bundle.crt //
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
ssl_certificate /aivanf/ssl/ca_chain.crt;
ssl_certificate_key /aivanf/ssl/ca.key;
与我以前所说的ca.key