CentOS 下使用 certbot 配置 Let's Encrypt SSL证书

前言

  certbot 是一个提供命令行来自动配置网站 SSL 证书的工具。访问其官网可以获得不同操作系统以及不同 Web 服务器下的使用教程。

  Let’s Encrypt 是一个提供免费 SSL 证书认证服务的非营利性项目。旨在加速网页由 HTTP 协议到 HTTPS 的转变。

  该教程以 CentOS 7.4 和 Apache 2.4 为例。最后更新时间:2018年3月24日。

安装 certbot

  • 首先开启 EPEL 源

    1
    2
    $ sudo yum -y install yum-utils
    $ sudo yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
  • 安装 certbot-apache

    1
    $ sudo yum install certbot-apache

安装证书

  如果你想直接自动安装自签名的证书,直接运行:

1
sudo certbot --apache

  根据提示操作即可。

安装 Let’s Encrypt 证书

  但一般个人自签名证书是无法被浏览器认可的。所以我们需要安装 Let’s Encrypt 提供的证书。

  步骤如下:

安装 DNS 插件

  certbot 提供了 一些DNS 插件 帮助我们自动配置证书服务。根据域名的 DNS 服务商安装对应的 certbot 插件。

  这里以 CloudXNS 为例。CloudXNS 提供免费的域名托管服务。

1
2
# 安装 certbot-dns-cloudxns 插件
sudo yum install python2-certbot-dns-cloudxns

准备 DNS 配置文件

  在下面的安装证书的过程中需要一个配置文件来确认域名。

  首先通过 CloudXNS 提供的 API 获取认证信息,然后以下列格式保存该认证信息:

1
2
3
# CloudXNS API credentials used by Certbot
dns_cloudxns_api_key = 1234567890abcdef1234567890abcdef
dns_cloudxns_secret_key = 1122334455667788

安装 Let’s Encrypt 证书

  使用 certbot 自动安装证书。(注意替换下面命令中的域名)

1
sudo certbot -a dns-cloudxns -i apache -d "*.example.com" -d example.com --server https://acme-v02.api.letsencrypt.org/directory

  根据提示输入上文中准备好的 DNS 配置文件路径。然后继续按提示操作即可。

可能遇到的问题

Q: 找不到 DNS 服务商对应的 certbot dns 插件

  A: 手动配置或更换 DNS 服务商

Q: 提示 openSSL 版本过低

  A: 卸载重装,具体步骤百度可得

Q: 执行安装证书命令时提示缺少 python 库

  A: 根据报错信息安装对应的库。StackOverflow 有类似问题的解决方案。

其他问题请留言。