关于自动生成 ssl 证书的问题

2024-09-25 14:20:09 +08:00
 sanshao124
各位大佬,请教一个问题,我的系统是 mac ,安装了 docker ,如果我只是想通过 docker 实现自动获取某个域名的证书该怎么弄呢?最好带自动续期的操作

我只需要本地获取了证书文件就行,比如域名.key ,域名.pem ,这种文件,不需要再做其他操作,网上搜的要么很复杂,要么就在 mac 上无法实现

至于证书是通过什么平台获取的,通过 acme 还是其他方式都不重要,只要是 docker 下的就行

我对 docker 了解的不多,只会照着已有的命令改改参数
2696 次点击
所在节点    程序员
24 条回复
defunct9
2024-09-25 14:31:20 +08:00
lego
molezznet
2024-09-25 14:40:31 +08:00
mac 不支持 cron + acme 吗? 连 docker 都不用运行的
sanshao124
2024-09-25 14:57:41 +08:00
@molezznet 我还是喜欢 docker ,个人原因
cat
2024-09-25 15:03:19 +08:00
certbot 不是有官方 docker 镜像嘛
sanshao124
2024-09-25 15:09:11 +08:00
@cat 主要不是有没有得问题,是我不知道该如何用
fly9i
2024-09-25 15:14:20 +08:00
建议既然喜欢 docker 就先学学,哪怕是用 ai 呢,否则这是干啥呢……
sanshao124
2024-09-25 15:15:27 +08:00
@fly9i 我学了,可是我没看懂啊,大部分都是涉及到 nginx 或者 apache ,我压根就不需要这玩意,我就不知道该怎么弄了
sanshao124
2024-09-25 15:16:12 +08:00
@fly9i 况且我研究半天可能还不如大家的一句话呢
sanshao124
2024-09-25 15:17:28 +08:00
@fly9i 我喜欢 docker 不是因为技术,是因为我需要部署一些服务,docker 比较方便,管理起来也省事,坏了修起来都好修,很多年都不搞技术了,弄 docker 也是纯自己用的
Jinnrry
2024-09-25 15:20:37 +08:00
https://go-acme.github.io/lego/usage/cli/obtain-a-certificate/index.html

使用 lego 的 cli 模式,如果你服务器可以开 http 的话你可以使用 http 验证模式( lego 客户端自动开启一个 http 服务,不需要你装 nignx 啥的),如果不能使用 http 模式的话(比如 80 端口被占用)你可以使用 dns 挑战模式,你只需要填写你 dns 服务商的 token 授权啥的,lego 客户端自动操作 dns 记录完成验证
JensenQian
2024-09-25 16:01:46 +08:00
不是哥们,你不整 nginx 什么的,要证书干啥
哥们你是不是想要傻瓜式的一键就能申请的那种
这个倒是最近玩过一个叫 lucky ,用来内网穿透的,不过也能申请证书
功能有点多,支持 docker
JensenQian
2024-09-25 16:03:39 +08:00
@JensenQian #11 不过我没看懂你需要证书来干啥
内网穿透吗,还是干啥,你要内网穿透或者外面访问的话直接可以用 cf tunnel
那玩意点几下就行了,证书什么的你都不用管
sanshao124
2024-09-25 16:36:39 +08:00
@JensenQian #12 我用的 frp ,外网有个 frp server
RoyLaw
2024-09-25 16:42:57 +08:00
https://github.com/usual2970/certimate/releases 这个工具是不是很符合你的需求?我刚刚开始用
sanshao124
2024-09-25 16:46:09 +08:00
@JensenQian #11 我就想说没有个傻瓜式的 docker 吗?加上比如阿里云的 id 和 secret ,就能直接生成证书的,好像都好麻烦啊,我问 chatgpt ,它说用 certbot ,然后还要安装 dns 插件,死活也装不上,然后就各种问题,我都快整崩溃了
sanshao124
2024-09-25 16:47:54 +08:00
@RoyLaw 牛逼啊,对对,就是这种,谢谢,我研究一下
sanshao124
2024-09-25 16:57:28 +08:00
@RoyLaw 我用 docker 方式安装,这个错误啥意思: git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
sanshao124
2024-09-25 17:02:16 +08:00
@RoyLaw 我好像搞定了,谢谢啊
RoyLaw
2024-09-25 17:03:52 +08:00
@sanshao124 lol 自己解决的速度好快 不用客气
adminhf
2024-09-25 17:15:17 +08:00
FROM ubuntu:20.04
RUN apt-get update && \
apt-get install -y curl socat && \
apt-get clean
RUN curl https://get.acme.sh | sh
ENV CF_API_EMAIL your_email@example.com
ENV CF_API_KEY your_cloudflare_api_key
RUN /root/.acme.sh/acme.sh --issue --dns dns_cf -d yourdomain.com -d '*.yourdomain.com' && \
/root/.acme.sh/acme.sh --install-cert -d yourdomain.com \
--key-file /path/to/your/keyfile.key \
--fullchain-file /path/to/your/fullchain.cer
RUN apt-get purge -y curl && apt-get autoremove -y
CMD ["tail", "-f", "/dev/null"]
简单写了写,自己改改吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1075671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX