来此加密证书申请,验证,自动部署

之前用certbot, 后来一直不报错, 证书不管用, 就想着干脆直接使用来此加密, 不要中间商了, 就有了直接到来此加密注册之旅

注册地址:

来此加密https://letsencrypt.osfipin.com/user-0408/order/list附上这两年的"战绩"

申请这么多证书主要原因是, 测试域名太多, 一些用了之后又不要了, 还有一些测试域名的证书

话不多说, 直接申请证书

1, 点击申请证书

2,输入需要申请证书的域名,如果需要泛域名,或者包含根域名, 自行选中

 3,选择加密方式,我一般就下一步了

 4,选择渠道和是否需要独立通道, 独立通道的作用可以去看看文档, 总的来说就是可以同时处理多个证书的申请&验证, 然后验证和创建的速度要快些, 备注我都没怎么在意

 5,提交, 等证书创建成功

 

因为我的这个测试域名已经创建成功了的, 只能另起一个域名作为演示: a.sinclair.world

 6,选择验证方式

        http验证:

        

如果已经指了域名, 就可以用http,在域名服务器的目录下面创建文件夹 mkdir -p ./.well-known/acme-challenge/

点击"立即下载",把文件放到新建的文件夹里面, 就可以直接点击验证本条了, 需要注意的是服务器的配置不要把http直接跳转https了, 不然要报错

        DNS验证:

需要注意上面说的是TXT  还是CNAME, 按照指定的规则添加DNS规则, 然后再进行验证

下面附上一些失败记录,HTTP的失败是因为没关闭http跳转https, DNS就是没看清楚到底是TXT解析还是CNAME解析...自己的锅自己背......

 

 7,我用的nginx 就参考了文档里面的nginx配置

server
{
    listen 80;
    listen 443 ssl http2;
    
    ssl_certificate path\fullchain.crt;
    ssl_certificate_key path\private.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
		ssl_session_tickets off;
  
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
  
  	# 开启OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
}

 只需要把fullchain.crt和private.pem放在指定的文件夹, 配置好了就重启nginx

8,通过shell脚本自动部署

        8.1变更验证类型

         8.2根据API接口里面的步骤进行

        首先创建一个key,然后点击查看进入文档

 

         看到了手册 案例:linux下自动下载和部署 · 语雀根据接口文档,可以编写满足需求的bash文件,实现自动...https://www.yuque.com/osfipin/letsencrypt/makzkw

 我用了这个案例里面的例子

附上我的脚本:

 

#!/usr/bin/env bash
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

# 参数配置 开始
ORDER_ID='2x83ml'#上图的自动验证ID
TYPE='auto'#自动重申&自动验证的话,这里需要是auto
API_TOKEN='xxxxxx'##刚刚申请的key
API_USER='XXX@163.com'#我的用户名
FILE_CERT_DIR='/etc/nginx/cert'
FILE_CERT=${FILE_CERT_DIR}'/fullchain.crt'
FILE_CERT_KEY=${FILE_CERT_DIR}'/private.pem'
COMAND_RELOAD='nginx -s reload'
# 参数配置 结束

# 以下内容根据需求修改
# 证书到期前13天内才会更新
isexpire=`openssl x509 -in ${FILE_CERT} -noout -enddate -checkend 91123200`
if echo "${isexpire}" | grep  " not " ; then
	#echo "Certificate will not expire."
	exit 1
fi

API_URL='https://api.osfipin.com/letsencrypt/api'
URL_ORDER_DOWN="${API_URL}/order/down"
HEADER_AUTHOR="Authorization: Bearer ${API_TOKEN}:${API_USER}"
ZIP_FILE="${ORDER_ID}.$RANDOM"
curl ${URL_ORDER_DOWN} -H "${HEADER_AUTHOR}" -G -d "id=${ORDER_ID}" -d "type=${TYPE}" -o ${ZIP_FILE}.zip

if [ ! -s "${ZIP_FILE}.zip" ]; then
	echo "download error."
	exit 1
fi

size=`du -b ${ZIP_FILE}.zip | awk '{print $1}'`
if [[ ${size} -lt 500 ]]; then
	echo "download file error."
	cat ${ZIP_FILE}.zip
	unlink ${ZIP_FILE}.zip
	exit 1
fi


# 解压 移动文件
mkdir -p ${ZIP_FILE}
mkdir -p ${FILE_CERT_DIR}
unzip ${ZIP_FILE}.zip -d ${ZIP_FILE}
cp ${ZIP_FILE}/fullchain.crt ${FILE_CERT}
cp ${ZIP_FILE}/private.pem ${FILE_CERT_KEY}
# 删除 打完收工
unlink ${ZIP_FILE}.zip
rm -rf ${ZIP_FILE}

##`${COMAND_RELOAD}`

脚本在root用户下运行

在crontab里面添加定时任务, 我是周二周五运行一下

30 8 * * 2,5 bash /root/backup/updateHttps.sh

至此, 从申请证书, 到验证, 到配置, 再到自动部署, 大致的步骤就完了, 官方文档很详细了, 需要注意的是:

  •         http验证的时候, 文件夹权限要注意, http不要直接跳转https, 证书配置好了再说哈
  •         DNS验证的时候, 需要注意是TXT解析还是CNAME解析
  •         自动部署的时候, 过期时间需要改一下

免费的证书, 爱了吗, 不过建议加入VIP, 买点独立通道, 真的很方便!

附上推荐码,可自取: 2DOV0NRJ

记录完毕, 收工

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值