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

rocLv · April 14, 2021 · Last by hegwin replied at December 28, 2022 · 2909 hits
Topic has been selected as the excellent topic by the admin.

最近我公司网站想做个 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 mark as excellent topic. 14 Apr 21:42

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

Reply to ywencn

蜗牛大哥

你公司最近才做 HTTPS。。。

Reply to ywencn

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

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

rocLv in [UPDATED] 用 Rails 开发 WebSSH(入门版) mention this topic. 25 Aug 22:20

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

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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.