惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
雷峰网
雷峰网
罗磊的独立博客
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
GbyAI
GbyAI
Cisco Talos Blog
Cisco Talos Blog
Engineering at Meta
Engineering at Meta
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
A
About on SuperTechFans
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Cloudflare Blog
Know Your Adversary
Know Your Adversary
T
Threat Research - Cisco Blogs
Spread Privacy
Spread Privacy
D
DataBreaches.Net
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
Cyberwarzone
Cyberwarzone
爱范儿
爱范儿
U
Unit 42
Security Latest
Security Latest
M
MIT News - Artificial intelligence
月光博客
月光博客
Scott Helme
Scott Helme
G
Google Developers Blog
有赞技术团队
有赞技术团队
T
Tor Project blog
宝玉的分享
宝玉的分享
Y
Y Combinator Blog
博客园 - Franky
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
The GitHub Blog
The GitHub Blog
V
V2EX
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
S
Securelist
博客园 - 三生石上(FineUI控件)
Blog — PlanetScale
Blog — PlanetScale
TaoSecurity Blog
TaoSecurity Blog
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
腾讯CDC
D
Docker
Google Online Security Blog
Google Online Security Blog

HaoKunT的博客

如何用 ollama 快速下载 deepseek 模型 - HaoKunT的博客 python使用gdal - HaoKunT的博客 Word中写LaTeX公式 - HaoKunT的博客 g++中的rpath和runpath - HaoKunT的博客 Ext4文件系统 - HaoKunT的博客 文件系统介绍 - HaoKunT的博客 理解shell - HaoKunT的博客 Hyper V安装ENVI - HaoKunT的博客 华为软件实习生笔试 - HaoKunT的博客 用C++实现一个命令行进度条 - HaoKunT的博客 PCA与GWPCA - HaoKunT的博客 字节后台实习生笔试题目 - HaoKunT的博客 Web终端仿真器 - HaoKunT的博客 阿里云API网关与函数计算的基础理解 - HaoKunT的博客 函数计算搭建DNS服务器 - HaoKunT的博客 DNS解析过程 - HaoKunT的博客 Github图片加载不出来 - HaoKunT的博客 将Elementary OS装在U盘中 - HaoKunT的博客 MacOS+Windows 双系统的安装 - HaoKunT的博客 IPXE+netboot+ISCSI 网络启动 - HaoKunT的博客 Esxi+NAS+Openwrt - HaoKunT的博客 Esxi的安装和使用 - HaoKunT的博客 Golang使用海康威视SDK - HaoKunT的博客 Filetools工具 - HaoKunT的博客 学习正则表达式 - HaoKunT的博客 Vugu View - HaoKunT的博客 Django Restframework 嵌套序列化 - HaoKunT的博客 看不了netlify的部署日志 - HaoKunT的博客 Go Modules的使用 - HaoKunT的博客 使用hugo+netlify部署个人主页 - HaoKunT的博客 关于我 - HaoKunT的博客 在线工具大全 - HaoKunT的博客 SWIG编译海康威视SDK 使用golang - HaoKunT的博客 SWIG 以Python为例 - HaoKunT的博客 Seafile - HaoKunT的博客 Golang的小技巧 - HaoKunT的博客 归档 - HaoKunT的博客 搜索 - HaoKunT的博客
利用acme自动更新证书 - HaoKunT的博客
HaoKunT · 2019-09-24 · via HaoKunT的博客

本文为原创文章,转载注明出处,欢迎关注网站https://hkvision.cn

acme

Let's Encrypt制定的自动化证书管理协议,通过这个协议我们可以自动更新证书,无需人工干预

acme.sh

github上已经有一个项目,用shell写的脚本,功能很强大,直接用就行了

安装

1
curl https://get.acme.sh | sh

重新载入一下.bashrc

之后你就可以直接用acme.sh命令了,有alise

申请证书

申请的方式有几个,大致的流程是

  • 提出申请
  • Let's Encrypt给你提出挑战(challenge),挑战分别有两种,1.网站根下弄一个文件。2.DNS解析加一条TXT记录。随便验证一条就行了
  • 完成挑战中的一种
  • 签发

整个过程很清晰,主要是验证你对这个网站有操作权。这里我们选择DNS解析,第一种需要你本身有一个http站点,而且最关键的问题是80端口要开,这对于80被封掉的人来说简直就是一个悲剧。DNS验证就没这个问题了。

1
acme.sh --issue --dns dns_ali -d xxx.xxx.com

具体你哪个DNS提供商的具体指令看这里 阿里云的需要你在环境变量里面加key和srcret

export Ali_Key="xxxxxxxxxxxx"
export Ali_secret="xxxxxxxxxxx"

阿里云现在子账号里面支持DNS解析的权限了

成功的话你会看到你的证书,并且提示你成功了,证书文件放在~/.acme.sh目录里面,你之前的配置什么的脚本都放在了配置文件里面,你不用担心下次执行的时候找不到配置

安装证书到nginx

记住不要直接把证书放到nginx的配置下,要用脚本提供的命令,因为这样脚本在证书快过期的时候自动更新才会知道应该放到哪,并做什么操作

1
2
3
4
acme.sh --installcert -d xxx.xxx.com \ 
               --key-file      /home/ubuntu/www/ssl/xxx.xxx.com.key  \ 
               --fullchain-file /home/ubuntu/www/ssl/xxx.xxx.com.key.pem \ 
               --reloadcmd     "sudo service nginx force-reload"

--reloadcmd会让脚本在更新完后执行一个命令,这里就是重新载入配置

修改sudoer

修改一下sudoer

新增一条

ubuntu  ALL=(ALL) NOPASSWD: /usr/sbin/service nginx force-reload

这样在执行sudo service nginx force-reload的时候就不用输密码了

生成DH交换密钥

本人之前配ssl的时候没有这一步,这次在网上发现很多博主说要配这个,网站更加安全。

1
openssl dhparam -out /home/ubuntu/www/ssl/dhparam.pem 2048

这一步大概要花比较长的时间,耐心等待一下,具体原因是这样的

dhparam 算法是在 2^4096 个数字中找出两个质数,所以需要的时间挺长。….. 意思是有可能的质数,+ 是正在测试的质数,* 是已经找到的质数。(引自:Nginx 配置上更安全的 SSL & ECC 证书 & Chacha20 & Certificate Transparency

修改nginx配置

server {
    ssl_certificate /home/ubuntu/www/ssl/xxx.xxx.com.key.pem
    ssl_certificate_key /home/ubuntu/www/ssl/xxx.xxx.com.key
    ssl_dhparam /home/ubuntu/www/ssl/dhparam.pem
}

检查配置后重启

1
2
sudo service nginx configtest
sudo service nginx restart

跑个分

https://ssllabs.com/ssltest/(国外的,不能指定端口)

https://myssl.com/(国内的,可以指定除443以外的端口)

拿到A+就可以了,你还可以看到具体的评测结果

自动更新

这部分在你第一次申请的时候acme.sh就帮你做了,用的是cron定时计划

1
2
$ crontab -l
0 0 * * * "/home/ubuntu/.acme.sh"/acme.sh --cron --home "/home/ubuntu/.acme.sh" > /dev/null

你可以尝试手动执行一下,在没过期的时候会跳过,你可以指定--force参数来强制更新

没问题的话就代表万事大吉了,恭喜你不用管证书的更新问题了

后记

你可以配置OCSP装订,也不难,网上教程很多,Nginx 配置上更安全的 SSL & ECC 证书 & Chacha20 & Certificate Transparency里面就有