Https证书申请并自动更新与分发

安装acme

我们使用acme来申请免费的https通用域名证书 acme的证书有效期为三个月,但会创建一个定时任务提前一个月来进行续约

安装acme

1curl https://get.acme.sh | sh 2 3cd ~/.acme.sh/ 4yum -y install socat 5 6 7

验证证书

为了验证域名所有权,Let's Encrypt 支持两种方式来验证:

  • 通过阿里云DNS 验证域名
  • 域名的访问

sh acme.sh --installcert -d 4d-bios.com --key-file /mnt/ssl/nginx/4d-bios.com/4d-bios.com.key --fullchain-file /mnt/ssl/nginx/4d-bios.com/fullchain.cer --reloadcmd "ssl.sh"

通过域名访问

1sh acme.sh --issue -d [域名] --standalone 2

通过DNS来验证

我们通过创建一个阿里云的的子账户key 并对子账号授权DNS的权限

1.bashrc 里添加 2 3export Ali_Key="xx" export Ali_Secret="xxx" 4 5source ~/.bashrc

然后就可以执行验证了

1acme.sh --issue --dns dns_ali -d [域名] -d *.[域名] 2 3 4# 配置安装SSL证书路径和重启的命令 5 6sh acme.sh --installcert -d [域名] \ 7 --key-file /mnt/ssl/[域名].key \ 8 --fullchain-file /mnt/ssl/fullchain.cer \ 9 --reloadcmd "nginx -s reload"

NGINX 配置SSL证书

1server { 2 listen 443; 3 server_name localhost; 4 ssl on; 5 root html; 6 index index.html index.htm; 7 ssl_certificate cert/xxx.pem; 8 ssl_certificate_key cert/xxx.key; 9 ssl_session_timeout 5m; 10 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 11 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 12 ssl_prefer_server_ciphers on; 13 location / { 14 root html; 15 index index.html index.htm; 16 } 17}

证书的自动分发

由于有多台服务器都需要用到相同的证书,这时候证书的分发就成为了问题, 我们在一台公共机器的节点上利用ssh来实现分发,先配置好ssh免密登录

执行分发的脚本

1#!/bin/bash 2 3# 分发ssl证书 4 5# 待分发的服务器list 6 7SERVERS=("ip1" "ip2"); 8 9 10for str in ${SERVERS[@]}; do 11 scp -r /mnt/ssl/ $str:/mnt/ 12 echo "SCP SSL TO $str" 13 ssh $str "docker restart nginx" 14 echo "SSH restart nginx " 15done 16 17 18sh acme.sh --installcert -d [域名] \ 19 --key-file /mnt/ssl/[域名].key \ 20 --fullchain-file /mnt/ssl/fullchain.cer \ 21 --reloadcmd "ssl.sh" #指定定时执行上面的脚本
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )