gpt4 book ai didi

docker - docker-compose 中的 Certbot 命令发出带有无效 CA 的 SSL 证书

转载 作者:行者123 更新时间:2023-12-04 22:37:53 31 4
gpt4 key购买 nike

问题
我正在尝试使用 certbot在我的多容器 Docker 配置中为 Nginx 自动生成 TLS 证书。除了证书颁发机构 (CA) 无效外,一切都按预期工作。
当我访问我的网站时,我看到 Fake LE Intermediate X1 ,一个无效的权威,颁发了证书:
enter image description here
我的设置
这里是 docker-compose.yml 我调用的文件certbot生成证书:

version: '2'
services:
apollo:
restart: always
networks:
- app-network
build: .
ports:
- '1337:1337'
certbot:
image: certbot/certbot
container_name: certbot
volumes:
- certbot-etc:/etc/letsencrypt
- certbot-var:/var/lib/letsencrypt
- web-root:/var/www/html
depends_on:
- webserver
command: certonly --noninteractive --keep-until-expiring --webroot --webroot-path=/var/www/html --email myemail@example.com --agree-tos --no-eff-email -d mydomain.com
webserver:
image: nginx:latest
container_name: webserver
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- web-root:/var/www/html
- ./nginx.conf:/etc/nginx/nginx.conf
- certbot-etc:/etc/letsencrypt
- certbot-var:/var/lib/letsencrypt
- dhparam:/etc/ssl/certs
depends_on:
- apollo
networks:
- app-network

volumes:
postgres: ~
certbot-etc:
certbot-var:
dhparam:
driver: local
driver_opts:
type: none
device: /home/user/project_name/dhparam/
o: bind
web-root:

networks:
app-network:
我认为 Nginx 不是问题,因为 HTTP -> HTTPS 重定向有效,并且浏览器收到了证书。但以防万一:这里是 nginx.conf 我在其中引用证书并配置 HTTP -> HTTPS 重定向。
events {}
http {
server {
listen 80;
listen [::]:80;
server_name mydomain.com;

location ~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}

location / {
rewrite ^ https://$host$request_uri? permanent;
}
}

server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name mydomain.com;

server_tokens off;

ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;

ssl_buffer_size 8k;

ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers on;

ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

ssl_ecdh_curve secp384r1;
ssl_session_tickets off;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8;

location / {
try_files $uri @apollo;
}

location @apollo {
proxy_pass http://apollo:1337;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
}

root /var/www/html;
index index.html index.htm index.nginx-debian.html;
}
}
我试过的
  • 最初,我调用 certonly--staging cerbot 中的参数docker-compose.yml 中的容器定义.这肯定会导致无效的 CA 问题。但是,我已经尝试撤销 CA 并多次重新运行该命令,但没有运气。
  • 我试过删除 --keep-until-expiring cerbot 中的标志docker-compose.yml 的容器定义.这会导致 cerbot生成新证书,但它没有解决 CA 问题。
  • 来访crt.sh ,我可以看到 certbot 确实为我的域颁发了有效证书:

  • enter image description here
    因此,问题似乎不在于这些证书的生成,而在于我的 docker-compose/cerbot 配置引用它们的方式。

    最佳答案

    您可以尝试添加 --force-renewal旗帜:

    command: >-
    certonly
    --webroot
    --webroot-path=/var/www/html
    --email myemail@example.com
    --agree-tos
    --no-eff-email
    --force-renewal
    -d mydomain.com

    关于docker - docker-compose 中的 Certbot 命令发出带有无效 CA 的 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62585090/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com