LetusEncrypt


title: “LetusEncrypt”
createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00
draft: false
author: “name”
tags: [“https”,“certbot”]
categories: [“network”]
description: “测试的”

1.http与https

  • 简单的说:
    • https = http+ssl(安全访问)
    • https 比较安全

2.Let’s Encrypt

  • 想要 https 就是购买证书
  • 在 Let’s Encrypt可以免费申请证书
  • 官网

3.Certbot

  • Let’s Encrypt 官网提供的服务端的API 但是 作为使用者 还是别去研究API
  • 官网有很多语言的客户端的 (java,go)
  • 官网要推荐的客户端 cerbot

4.开启 Certbot 之旅

  • 好像有多种模式 ,多种插件 (多条岔路容易错误)
  • 无插件 certbot 完成对SSL证书的 申请和续约

4.1 准备环境

  • 系统 debian (debian:buster-slim)
  • 需要能连接互联网
  • 会用apt命令

4.2 安装certbot

  • 更新 apt 源索引
    createTime: 2021-07-29T10:15:04+08:00
    updateTime: 2021-07-29T10:15:04+08:00
  • 安装 certbot
    • apt install certbot

4.3 使用certbot

  • 安装申请证书

    • certbot certonly --agree-tos  --server https://acme-v02.api.letsencrypt.org/directory \
             -m [email protected] -d xxx.top --manual --preferred-challenges dns \
      

createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00
–manual-public-ip-logging-ok
–dry-run
```

  • 解释

    • certonly 只是申请证书
    • –agree-tos 表示同意后面选项
    • –server api请求到的地址
    • -m 后面加邮箱
    • -d 后面加域名 也可以是泛域名 *.xx.top -d 可以加多个
    • –manual 通过交互式方式,或 Shell 脚本手动获取证书
    • –preferred-challenges 通过什么方式 验证域名是你的
    • –manual-auth-hook 验证过程中会调用后面方法 (看后面解释)
    • -n 已非交互式 就是不需要选择的方式 (直接全部同意)
    • –manual-public-ip-logging-ok 同意你的iP被记录
    • –dry-run 就是测试是否通过 如果不加 失败几次就不能测试了 或者通过几次 也不能测试了
    • 具体限制地址 dry-run 限制策略

createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00

+ ```
  CERTBOT_DOMAIN:正在验证的域
  CERTBOT_VALIDATION:验证字符串
  CERTBOT_TOKEN:HTTP-01 挑战的资源名称部分(仅适用于 HTTP-01)
  CERTBOT_REMAINING_CHALLENGES:当前挑战之后剩余的挑战数
  CERTBOT_ALL_DOMAINS:用逗号分隔的当前证书所面临的所有域的列表
  ```

+ 最主要还是 CERTBOT_VALIDATION   

  + shell可以通过echo ${CERTBOT_VALIDATION} 脚本获取 
  + go可以通过 var accessKeyID = os.Getenv("CERTBOT_VALIDATION") 获取
  
+ 通过这个脚本  完成一下操作

+ | 主机记录 | 记录类型 | 解析线路 | 记录值 | TTL  | 状态 |
  |------|-------- | -------| ----| ----| ----|
  | _acme-challenge | TXT | 默认 | CERTBOT_VALIDATION | 10分钟 | 正常 |
  
+ 通过域名服务商 提供的API 完成 添加或者更新  DNS的解析  

+   完成以后 最好让脚本程序 睡眠10秒 (更改没那么快)
  • 这样就完成了全自动申请证书了

  • 续期证书

    • 因为证书申请下来 有效期为90天 90天后就需要吧

    • 续签命令

createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00
```

+ 目前这个命令还没测试 通过  (证书没有过期)

+ 可以用定时任务进行 上述命令  

4.4 收尾操作

  • 产生证书目录 /etc/letsencrypt/live
  • 可以和nginx 等其它配置结合

5.额外需要封装

5.1封装docker化

dockerFile
  • FROM registory.dongshanxia.top:35000/docker/debian:2.6
    ENV CERRBOT_DIR=/etc/letsencrypt/
    ENV CERRBOT_CONFIG=$CERRBOT_DIR/live
    ENV SLEEPTIME=600   ## renew的查询的间隔时间
    ## certbot
    RUN top_install_packages certbot  ## 安装certbot
    shell   
    COPY TopALiDns /root/TopALiDns    ## 更新ali dns的脚本
    shell
    shell
    
  • 最主要是基于debian

start_certbot.sh
  • #!/bin/bash
    set -xv
    #mysql初始化
    INIT_GET_CERBORT(){
    	Config_Count=`ls ${CERRBOT_CONFIG} |wc -l`
    	if [[ "${Config_Count}" -ge 1 ]]
    	then
    		echo "证书已经安装不需要再次申请"
    	else
    		echo "证书没有 需要重新申请"
            certbot certonly --agree-tos  --server https://acme-v02.api.letsencrypt.org/directory \
            -m 邮箱@qq.com -d 域名 --manual --preferred-challenges dns \
    

createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00
fi
}

sleep_stop(){
process=ps -ef | grep start_sleep.sh | grep -v grep |awk '{print $2}'
kill -15 $process
kill -18 $process
exit
}

#RENEW_DAEMON守护脚本
RENEW_DAEMON(){
echo ‘RENEW_DAEMON’
while :
do
trap ‘sleep_stop’ SIGTERM
trap ‘sleep_stop’ SIGINT

    echo 'RENEW_DAEMON'

createTime: 2021-07-29T10:15:04+08:00
updateTime: 2021-07-29T10:15:04+08:00
chmod +x /root/start_sleep.sh
/root/start_sleep.sh ${SLEEPTIME} &
wait $!
done
}

echo ‘开始INIT_CERBOT’
INIT_GET_CERBORT
RENEW_DAEMON


+ 脚本功能解释

+ ```mermaid
graph TD
    A[Start] --> B{是否有申请好的证书};
    B -->|Yes| C[进入renew证书];
    D --> F[申请证书]
    F --> C;
 	B ---->|No| D[进入申请证书];
 	C -->G[进入循环续签证书];
 	G -->|循环 sleep| G;
docker-compose.yml
  • # 在工作目录下创建 docker-compose.yml 文件,编辑以下内容
    version: "3"
    services:
      nexus:
        image: registory.dongshanxia.top:35000/docker/certbot:1.0
        container_name: certbot
        hostname: 10.168.2.70
        restart: always
        privileged: true
        working_dir: /root
        environment:
          - profile=""
        volumes:
          - /etc/nginx/cert:/etc/letsencrypt/live
        logging:
          driver: "json-file"
          options:
            max-size: "10m"
            max-file: "5"
    

你可能感兴趣的:(数据库,chrome)