部署 使用 Caddy 代替 acme.sh 来为自己的网站颁发免费 SSL 证书

rocLv · 2021年04月14日 · 最后由 hegwin 回复于 2022年12月28日 · 2909 次阅读
本帖已被管理员设置为精华贴

最近我公司网站想做个 SSL 证书,然后就看了看使用 acme.sh 给 Nginx 安装 Let’s Encrypt 提供的免费 SSL 证书, 发现@huacnlee 建议使用Caddy, 但是没提供教程。

简单的看了一下网站,一如既往的需要安装:

$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo apt-key add -
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee -a /etc/apt/sources.list.d/caddy-stable.list
$ sudo apt update
$ sudo apt install caddy

Caddy支持两种配置方式,CaddyfileJSON 格式的文件,官网有比较这两种文件的优缺点,不过我选择了比较简单的Caddyfile

安装完成后创建Caddyfile文件:

yourdomain.com

response "Hello, privacy"

第一行是你的域名,第二行是指访问网站时返回的信息。

这里说明一下Caddy不单单是个颁发域名证书的免费工具,它是一个准备取代 nginx 的工具。

当然,这样配置对我们来说没有实际意义。

PS:记得操作之前先关了 nginx,因为它也是一个反向代理工具。

我们直接出一个 Rails 版的Caddyfile 吧。

yourdomain.com

reverse_proxy :3000

然后运行命令:

$ caddy start

至此,你的证书已经安装好了,也不需要在 renew 了。

因为我部署的是个 Java 项目,所以没试passenger服务怎么安装 @huacnlee 能补充一下吗?

另外,我测试了一下,证书达到了 A 级,而不是 A+。

另外再补充一下:

单页面应用 Caddyfile 配置

example.com {
  root * /root/www/admin
  try_files {path} {file} /index.html
  file_server
  encode gzip
}

修改以后无需重启,用reload 重新加载配置:

$ caddy reload

停止服务:

$ caddy stop
huacnlee 将本帖设为了精华贴。 04月14日 21:42

阿里云每个账号可以免费提供 20 个证书

ywencn 回复

蜗牛大哥

你公司最近才做 HTTPS。。。

ywencn 回复

是免费,但是过了一年忘记更新就麻烦了

阿里云、腾讯云都有免费的,一年配一次感觉更省事儿。

rocLv [UPDATED] 用 Rails 开发 WebSSH(入门版) 提及了此话题。 08月25日 22:20

自动更新才是刚需,免费不重要。

说实话,这篇文章我收藏很久了,最近终于从 nginx 换成 caddy 了,我这拖延症 😂

真实的很好用,很多事情都不需要自己去操心了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号