• docker nginx letsencrypt


    https越来越流行了,但免费的证书一般是一年有效期。一般是够用了,但懒人都想一劳永逸,

    有个免费证书颁发机构是letsencrypt。它是开源,并且完全免费的,它颁发的证书已经被几乎所有的浏览器所认可。证书90天有效期,支持自动续订。

    自己的服务器使用docker进行部署的,基本上有新项目都强迫症般docker化。letsencrypt这肯定支持docker运行的。

    官方有个certbot/certbot docker镜像

    本地使用nginx反向代理的,比如我的一个域名https://git.dxgz.work/

    修改nginx配置,添加

        location ~ /.well-known{       # https证书自动更新
                    proxy_pass http://127.0.0.1:88;         # certon自动更新接口
        }

    88端口是cerbot的容器的端口,重载配置

    sudo /usr/sbin/nginx -s reload    # 这个是装在主机的nginx重载命令
    docker exec -it nginx.web /usr/sbin/nginx -s reload
    # 我是使用docker的,要用这个命令

    certbot第一次运行时需要配置域名和邮箱地址,之后使用renew就可以了

     docker run -it --rm -p 88:80 --name certbot 
     -v "/data/ssl:/etc/letsencrypt"  
     certbot/certbot 
     certonly  --standalone 
     --email `你的邮箱地址` 
     -d `你的域名地址` -d www.`你的域名地址`

     上述命令将域名的ssl证书放在本地   /data/ssl

    因为有效期限制,需要配置自动更新,比如这样,放到crontab定时任务中

    renew_cert.sh
    # 运行docker-更新证书
    cd /data/letsencrypt && docker-compose up
    
    # reload nginx 配置,加载新证书
    #docker exec -it nginx.web /usr/sbin/nginx -t
    docker exec -it nginx.web /usr/sbin/nginx -s reload
    上面的docker-compose.yml内容
    version: '3'
    
    services:
      web:
        image: certbot/certbot
        container_name: certbot.ssl.web
        volumes:
          - /data/ssl:/etc/letsencrypt
        ports:
          - "88:80"
        command: renew
    crontab -e 添加一个定时任务,当然了,docker是需要root权限启动的,或者配置了普通用户运行
    0 0 * * * /data/letsencrypt/renew_cert.sh > /dev/null 2>&1
     每天凌晨0点运行



    得到证书后,配置nginx,请参考我的另一博客
    以上
  • 相关阅读:
    03 Linux下运行Django项目
    02 Linux常用基本命令(二)
    01 Linux常用基本命令(一)
    08 基本数据结构
    07 Deque的应用案例-回文检查
    给select增加placeholder技巧
    易经中人生的六大阶段 :潜、现、惕、跃、飞、亢 你在第几个阶段?
    java 实现傅立叶变换算法 及复数的运算
    java 正则表达式 复习
    关于mysql varchar(N)
  • 原文地址:https://www.cnblogs.com/duoxuan/p/10573640.html
Copyright © 2020-2023  润新知