我目前正在使用以下工具来允许基于Web的容器访问:> Nginx > ShinyProxy > Docker。服务器在Ubuntu22.04LTS上运行。Docker将容器转发到ShinyProxy,然后ShinyProxy输出到:8080,我使用Nginx将所有请求从URL (和80)反向代理到443,HTTPS。
我们有几个web应用程序在这个系统上运行,它们运行得很好,但是我似乎无法锁定HTTPS/SSL的挂锁,即使web应用程序没有运行,并且得到了404/502 Nginx错误页面。
无论Nginx的关键声明看起来多么简单,要么我遗漏了一个步骤,要么是某些东西的格式或配置错误。
我使用基于ShinyProxy提供的一些设置(https://shinyproxy.io/documentation/security/)的Nginx配置文件(https://shinyproxy.io/documentation/security/),我们的站点(可以链接到站点,使用ln -s支持)如下所示:
server {
listen 80;
server_name ourwebserverurl;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name ourwebserverurl;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log error;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/ssl/certs/ourwebserverurl.crt;
ssl_certificate_key /etc/ssl/private/ourwebserverurl.key;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}为了创建键,我们从以下命令开始:
openssl req -sha256 -newkey rsa:2048 -keyout ourserverurl.key.enc -out ourserverurl.csr这创建了两个文件,一个加密的PEM密钥和一个CSR,我们将CSR交给了GlobalSign,后者颁发了一个服务器证书。
Nginx需要两个密钥文件,第一个是在ssl_certificate中声明的,它是由已发布的服务器GlobalSign证书、它们的中间文件和它们的根证书(在这里找到的中间和根证书https://support.globalsign.com/ca-certificates/intermediate-certificates/intranetssl-root-intermediate-certificates)组成的密钥链包,它们都是正确的https://support.globalsign.com/ca-certificates/intermediate-certificates/intranetssl-root-intermediate-certificates格式。我已经将它们连接到以下链中的单个.crt中:颁发>中间>根。虽然复制密钥并将其粘贴到key服务并不是最好的主意,但我使用(https://tools.keycdn.com/ssl)检查了它,并从该站点的输出中获得了“没有检测到链问题”。
我已经联系了GlobalSign,似乎我已经拥有了我应该拥有的所有密钥,现在只剩下配置了。
对于最后一个密钥,输出的key.enc --我对密钥进行了加密,并将其更改为ourserverurl.key,并坚持使用PEM格式,尽管我使用了.key格式。我已经在.pem中看到了一些Nginx配置,但是我也有相同的文件,但是文件扩展名不同,没有任何改变。
我尝试过多种不同的格式,检查已发布的GlobalSign密钥与未加密的私钥,并在这方面得到匹配,但Nginx不会将显示为红色和删除的HTTPS更改为一个很好的挂锁。
它感觉我有所有正确的钥匙,但我不确定我是否有正确的配置。Nginx告诉我如果我使用
sudo nginx -t我得到了这个输出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful我的防火墙目前可以在IPv4和IPv6的标准网页访问请求上打开80和443个请求。
我觉得我缺少了一些config命令,我也不知道hiccup在哪里。
发布于 2022-11-04 16:40:31
我发现我们的组织从GlobalSign那里给了我们错误的证书类型:当它应该是OrganizationSSL时,他们给了我们一个IntranetSSL证书类型。我使用OrganizationSSL中间证书和根证书创建了正确的链,并将新发布的服务器证书放在顶部。连锁检查,Nginx检查,我重新启动Nginx,它翻转到挂锁。
编辑:原来我不需要根证书:我在我的链中删除了它,并且只在.crt中使用了颁发的服务器证书+中间证书。
https://stackoverflow.com/questions/74294516
复制相似问题