acme+letsencrypt生成tls证书

获取 TLS 证书

最近干些事情需要用到 tls 证书,虽说用 mkcert 自签一个证书也可以,但最后还是需要一个可以在公网上使用的证书
于是花了一些时间把这个搞定了

申请域名

想要申请 tls 证书,那肯定需要有一个域名,我还是在 namesilo(https://www.namesilo.com/) 上买了一个便宜的域名
就跟之前搭博客时一样,花点钱买了个一年的域名
申请了域名之后别忘了在 DNS 解析中添加一条A记录指向需要的地址

使用 acme.sh 获取证书

https://github.com/acmesh-official/acme.sh
跟着官方的文档就可以完成的差不多

安装 acme.sh

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

执行source ~/.bashrc命令确保命令都可以生效
Arch Linux 在使用时可能会缺少依赖,碰到了就看看需要安装那些
我在使用时碰到了没有安装 socat,安装一下即可

1
sudo pacman -S socat

我用的是 letsencrypt 来认证,免费的: https://letsencrypt.org/
也可以用 ZeroSSL https://zerossl.com
acme 官方的默认 CA 是 ZeroSSL,但是它老是抽风,容易申请失败,所以后面我还是用了 letsencrypt
执行如下命令申请证书

1
~/.acme.sh/acme.sh --issue -d 域名 --standalone -k ec-256 --server letsencrypt
  • -d 后面跟刚刚买的域名
  • -k ECC密钥长度有三个可选: ec-256 ec-384 ec-521
  • –server 选择 letsencrypt 来获取证书,默认是用 ZeroSSL 来的,不过日常抽风…

更新证书

由于 letsencrypt 的证书有效期只有3个月,因此90天内至少要更新一次证书,acme.sh 会每 60 天自动更新证书,但也可以手动更新
手动更新执行

1
~/.acme.sh/acme.sh --renew -d 域名 --force --ecc

导出证书和密钥

将获取到的证书和密钥到出来就可以使用了,更新后的证书也是要重新导出的

1
~/.acme.sh/acme.sh --installcert -d 域名 --fullchainpath /证书/路径/证书.crt --keypath /密钥/路径/密钥.key --ecc

这样就可以愉快的使用证书了 ξ( ✿>◡❛)▄︻▇▇〓▄︻┻┳═一


弄了一上午,可算是把 tls 证书搞定了,用起来很舒适,下次还会再来 (❛◡❛✿)
弄完了证书,又可以继续学习我的 golang 了 (๑¯∀¯๑)