Docker nginx自签名证书-can';无法连接到https
我一直在遵循一些教程,试图让我的SSL证书与我的docker环境一起工作。我决定采用letsencrypt的自签名证书。我使用以下命令生成了证书Docker nginx自签名证书-can';无法连接到https,docker,nginx,ssl,lets-encrypt,Docker,Nginx,Ssl,Lets Encrypt,我一直在遵循一些教程,试图让我的SSL证书与我的docker环境一起工作。我决定采用letsencrypt的自签名证书。我使用以下命令生成了证书 certbot certonly --manual \ --preferred-challenges=dns \ --email {email_address} \ --server https://acme-v02.api.letsencrypt.org/directory \ --agree-tos \ --manual-pub
certbot certonly --manual \
--preferred-challenges=dns \
--email {email_address} \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos \
--manual-public-ip-logging-ok \
-d "*.servee.co.uk"
注意:我正在使用多租户,因此我需要在我的域上使用通配符
这样就可以了,证书已经在我的服务器上生成了。我现在正尝试将其用于docker nginx容器
我的docker-compose.yml文件如下所示
...
services:
nginx:
build:
context: docker/nginx
dockerfile: Dockerfile
ports:
- 433:433
- 80:80
volumes:
- ./src:/var/www/html:delegated
depends_on:
- app
- mysql
networks:
- laravel
...
这是我的文件
FROM nginx:stable-alpine
COPY ./fullchain.pem /etc/nginx/fullchain.pem
COPY ./privkey.pem /etc/nginx/privkey.pem
ADD nginx.conf /etc/nginx/nginx.conf
ADD default.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /var/www/html
RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel
RUN chown laravel:laravel /var/www/html
我正在将pem文件复制到nginx容器中,以便使用它们
这是我的default.conf文件,它应该加载我的证书
server {
listen 80;
index index.php index.html;
server_name servee.co.uk;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
server {
listen 443 ssl;
server_name servee.co.uk;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
index index.php index.html;
location / {
proxy_pass http://servee.co.uk; #for demo purposes
}
}
nginx容器构建成功,当我进入它时,我可以找到pem文件。问题是当我去我只是无法连接错误。如果我去的话,效果很好
我不确定我错过了什么,这真的让我对docker不感兴趣,因为让SSL正常工作太痛苦了,希望它很容易修复。您需要更新docker-compose.yml文件以使用端口443而不是433来匹配nginx.conf。请尝试下面的docker-compose.yml文件
...
services:
nginx:
build:
context: docker/nginx
dockerfile: Dockerfile
ports:
- 443:443
- 80:80
volumes:
- ./src:/var/www/html:delegated
depends_on:
- app
- mysql
networks:
- laravel
...
HTTPS默认使用端口443,但您正在打开(仅)433。433不是443。顺便说一句,来自LetsEncrypt的证书不是自签名的。在PKI中,自签名是一个艺术术语,意味着使用与证书中相同的密钥(对)进行签名;这与你请求或指导CA发行没有任何关系。@dave_thompson_085非常感谢你,我不敢相信我制作了这种类型!感谢您解释海基会签署的证书是什么,这真的很有帮助