一次申请,到处使用——在物理机、容器、虚拟机之间传递HTTPS证书
——————
学习谭Sir,我今天也要成为一日两更的人,欧拉欧拉X2
——————
一、背景
来,开局一张图,康康咱的使用场景
如图,咱在Docker和VM里都跑了有需要Docker的服务,具体如下
方式 | 需要HTTPS的服务 | 说明 |
---|---|---|
Docker | LuckyMail | 邮箱 |
Docker | 宝塔 | 可道云和两个音乐播放器 |
Docker | VerySync | 微力同步 |
VM | LuckyBlogV2 | V2版新博客 |
这4种,每种都在不同的ip下,环境相互隔离,都需要HTTPS服务,我使用的证书是Let’s Encrypt的,每周证书有申请次数限制,如果每个单独申请,次数是不够的,而且除了宝塔之外,都不能自动续签,如果手动每90天都去自己手动拷贝,实在是太麻烦了,也容易遗忘,所以我们来整个自动传递更新HTTPS证书呗~
二、上手
2.1思路
需求明了啦,我们就可以上手了,思路如下:
2.2实践
2.2.1、宝塔证书到物理机
由于宝塔能够自动申请、续签证书,所以我们不太担心这个,这需要注意申请泛域名的就好,这样才能用到其它服务的网站上面
Docker宝塔到物理机我们选择使用docker cp命令,利用cron来定时跑,Unraid里面有User Script可以方便的执行Cron,非Unraid用户手动写cron命令即可
首先,用下面的命令查询容器ID
docker ps |
然后根据容器id导出https的CA和key
!/bin/bash |
假如每天00:15执行,就在前面加上这个,更多cron语法,看这里
15 00 * * * |
2.2.2 物理机证书到Docker
是2.2.1的反操作,调换容器和物理机的位置即可
!/bin/bash |
2.2.3 物理机证书到虚拟机
由于并不像物理机和Docker一样能直接传输文件,我们需要用点别的招数
我们使用微力同步,来完成这一任务
共享物理机的证书文件夹,然后只读共享给虚拟机,在nginx里面指定https的位置,像下面这样
#如下示例,证书存放在/usr/local/plumemo/https下 |
这样就能指定更新证书啦
三、结语
综上,我们就把物理机、虚拟机、Docker之间的证书传递搞定啦,我们只需要申请一次证书,就可以在各个服务上使用,无需手动更新,妈妈再也不怕我HTTPS证书过期啦~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuckyBlogV3!
评论