使用 Let‘s Encrypt 安装免费的 HTTPS 证书

Let's Encrypt 是什么

Let’s Encrypt 是一家全球性的证书颁发机构(CA)。我们让世界各地的人们和组织获取、续期和管理 SSL/TLS 证书。网站可以使用我们的证书来启用安全的 HTTPS 连接。

Let’s Encrypt 提供域名验证型(DV)证书。我们不提供组织验证(OV)或扩展验证(EV),这主要是因为我们无法自动化地颁发这些类型的证书。

Let’s Encrypt 是一个非营利性组织,我们的任务是通过促进 HTTPS 的广泛采用来创建一个更加安全和尊重隐私的 Web 环境。我们的服务免费且易于使用,因此每个网站都可以使用它来部署 HTTPS。

本文能够达到的效果

  • 申请 Let's Encrypt 免费 HTTPS 证书。
  • 申请泛域名证书,这样一个证书支持所有子域名共用。
  • 由于 Let's Encrypt 的证书有效期很短(90 天),acme.sh 能够自动更新证书。

操作步骤

注意:下面所有操作,全程使用 root 账户。

切换到Root用户:  sudo su root

假设已经安装好了 Nginx 服务器。

假设要配置的域名是 example.com,并且托管在阿里云。

在使用Root用户操作的时候会警告, 官方文档给出如下提示:

使用sudo不推荐使用。如果未正确配置为不要求输入密码,则在从 cronjob 运行命令(如更新)时可能会导致权限问题,从而导致您的部分或全部证书未被更新并最终会过期。

现在,如果您完全确定问题和使用 的可能性sudo并且仍然想使用它,您可以传递--force参数。

请记住:使用sudo不推荐使用。您可以选择自行承担风险。

我们传递 --force 参数, 继续........

安装 acme.sh

acme.sh 的网站是:https://github.com/Neilpang/acme.sh 。

首先安装 socat,acme.sh 依赖 socat。

# yum install -y socat

安装 acme.sh

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

检查 acme.sh 是否安装成功。

# crontab -l

如果安装正确,会有如下显示(第一列分钟是随机数):

11 0 * * * "/home/xiaoqiang/.acme.sh"/acme.sh --cron --home "/home/xiaoqiang/.acme.sh" > /dev/null

设置访问 DNS 的密钥

为了验证待申请域名的所有权,acme.sh 需要在 DNS 服务器添加记录,用来验证。

这里采用阿里云 API 的方式,其它 API(CloudFlare,DNSPod,GoDaddy,等),及服务器验证方式,请查看 acme.sh 文档。

在阿里云创建一个 RAM 子账户,获得 Key 和 Secret,设置到环境变量。

# export Ali_Key="替换我"
# export Ali_Secret="替换我"

申请证书

我们申请一个泛域名的证书,这样,所有二级域名都可以共享这个证书了。

# ~/.acme.sh/acme.sh --issue --dns dns_ali -d example.com -d *.example.com

等待一大堆输出后,会有如下显示,表明申请成功。

Your cert is in  /root/.acme.sh/example.com/example.com.cer
Your cert key is in  /root/.acme.sh/example.com/example.com.key
The intermediate CA cert is in  /root/.acme.sh/example.com/ca.cer
And the full chain certs is there:  /root/.acme.sh/example.com/fullchain.cer

安装证书

这面这条命令将证书安装到 Nginx 配置目录,并设置当证书更新时,如果让新证书生效。

# ~/.acme.sh/acme.sh --installcert -d example.com --key-file /etc/nginx/ssl/example.com.key --fullchain-file /etc/nginx/ssl/example.com.cer --reloadcmd "systemctl force-reload nginx"

升级 acme.sh(2020-07-17 更新)

如果发现证书没有自动更新,并且执行 crontab 里面的命令提示如下错误

# /root/.acme.sh/acme.sh --cron --home /root/.acme.sh
...
Getting domain auth token for each domain
It seems the CA server is busy now, let's wait and retry. Sleeping 1 seconds.

就需要升级 acme.sh 了,升级命令

# ~/.acme.sh/acme.sh --upgrade

如果想自动更新, 可以使用如下命令:  acme.sh --upgrade --auto-upgrade

打完收功。

查看ssl证书有效时间

openssl x509 -in <证书请求文件> -noout -dates

卸载acme

acme.sh --uninstall
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值