• 使用certbot openresty执行获取 Let’s Encrypt https 免费证书


    背景

    项目以前用的是nginx,现在加上了openresty,有一个新的网站需要使用certbot生成,这个时候原先的生成命令不管用,研究了一下如何处理。

    nginx时候的命令

    执行获取 Let’s Encrypt https 证书命令

    // certbot certonly --nginx --nginx-server-root [nginx配置目录] -d [域名] -m [邮箱]
    certbot certonly --nginx --nginx-server-root /etc/nginx/ -d mt.xxx.cn -m xxx@qq.com
    
    • 1
    • 2

    openresty时候的命令

    从–nginx --nginx-server-root改为了–webroot -w,感觉nginx也可以用–webroot -w

    // certbot certonly -webroot -w [项目路径] -d [域名] -m [邮箱]
    certbot certonly --webroot -w /opt/projects/XXXXX/  -d mt.xxx.cn -m XXX@qq.com
    
    • 1
    • 2

    注意

    在执行certbot 命令之前,一定要确保http的请求能正确访问,openresty的配置和域名指向都正确,否则会抛错。
    下图是我没有配置好http的访问导致的抛错:
    这里是由于我
    先做一个临时的配置,能让certbot 访问的http网站

    server {
        listen 80;
        server_name www.xxx.com;
        location / {
            try_files $uri $uri/ /index.html;
            root /opt/xxx/xxx;
            index index.html index.htm;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    配置正确以后的执行情况:
    在这里插入图片描述

    启用443端口

    并把http的指向https

    server {
        listen 80;
        server_name www.xxx.com;
        rewrite  ^/(.*)$  https://www.xxx.com/$1 permanent;
    }
    
    server {
        listen 443 ssl;
        server_name www.xxx.com;
    
        ssl_prefer_server_ciphers on;
        ssl_ciphers HIGH:!ADH:!MD5:!aNULL:!eNULL:!MEDIUM:!LOW:!EXP:!kEDH;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_session_timeout 1d;
        ssl_session_cache shared:SSL:50m;
        ssl_stapling on;
        ssl_stapling_verify on;
        add_header Strict-Transport-Security max-age=15768000;
    
        ssl_certificate /etc/letsencrypt/live/www.xxx.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/www.xxx.com/privkey.pem;
    
    
        location / {
            try_files $uri $uri/ /index.html;
            root /opt/xxx/xxx;
            index index.html index.htm;
        }
    
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                    root   html;
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    自动更新证书

    Let’s Encrypt 免费 SSL 证书用起来非常方便,但每次申请只有三个月有效期,在每次到期之前都需要重新申请,Certbot 提供了一键续订的命令

    # 1. 打开定时任务配置
     crontab -e
    # 2. 增加定时刷新的配置
    30 3 * */2 * /usr/bin/certbot renew --quiet >> /var/log/cerbot.log
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Jimmer: 一个面向Java和Kotlin的革命性ORM
    数据库概论-MySQL的数据表的基本操作
    金融行业多活架构设计及容灾发展趋势
    (一)devops持续集成开发——jenkins安装及基本使用
    win10 环境下Python 3.8按装fastapi paddlepaddle 进行身份证及营业执照的识别2
    chatgpt生成【2023高考作文】全国甲卷-人.技术.时间
    suricata的InspectEngine
    docker快速建立samba、vsftp文件共享
    网关介绍和作用,Spring Cloud Gateway介绍
    【2. IIC】
  • 原文地址:https://blog.csdn.net/qq_27575627/article/details/126724230