自从 Google 宣布把网站是否支持 SSL(传输层安全性协定)的 HTTPS 的安全性浏览列为网站排名审查重点后,已经有大量网站和部落客自主升级以支持绿色的🔒HTTPS浏览。我今天要来介绍如何透过Certbot申请和安装免费的 SSL 安全性凭证在网页服务器上(WordPress支持)。

我先前写过一篇《购买SSL安全凭证教学,替网站/部落格强化安全性与SEO排名》,内文提到如何付费购买SSL安全性凭证,虽然使用上较为方便,不过实际上还是有免费的方式可获得 SSL 证书,例如今天要介绍的「Let’s Encrypt」组织就是目前全球最大的免费 SSL 凭证签证组织,而且我们可以透过 Certbot 这套应用服务轻松申请 SSL 凭证让我们进行安装在服务器上。

申请 Let’s Encrypt 的免费 SSL 证书

步骤一,安装 GIT。

  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install git

步骤二,安装 Cerbot 服务。

步骤三:使用 Certbot 申请Let’s Encrypt的免费SSL凭证

  • cd certbot
  • ./certbot-auto

在自动程序执行过程中,会遇到「Do you want to continue? [Y/n] 」的询问,只要输入「Y」按下确认键(Enter/Return)就能继续进行处理。

如果出现如下所示的错误信息也不需要担心,由于自动化程序无法针对不同系统进行设计,我们只要手动执行后续步骤即可。

Failed to find executable apache2ctl in PATH: /opt/bitnami/varnish/bin:/opt/bitnami/sqlite/bin:/opt/bitnami/php/bin:/opt/bitnami/mysql/bin:/opt/bitnami/apache2/bin:/opt/bitnami/common/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

要解决上述错误信息,可以在 Certbot 目录下,改为输入下列指令:

./certbot-auto certonly —webroot -w /var/html/www/ -d DOMAIN

🔥注意:

  • 「/var/html/www」路径请跟换成你的服务器的「WordPress」目录的正确放置路径。
  • DOMAIN 请更换成你的正确网域。

执行上上面指令后,系统接下来会询问你的电子邮件地址,请输入你打算用来申请 SSL 签证的专用信箱。之后还有两次简单的问题确认,分别输入「A」、「Y」确认即可。

如果你在执行过程中遇到「DNS problem: SERVFAIL looking up A for DOMAIN」的问题,请检查你的域名供应商(例如:NameCheap)的 DNS 设定是否正确。如果都正确,请检查是否有设定「DNSSEC」,有的话可以先关掉试试看。

只要申请成功,你就可以看到如下所示信息:

MPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/DOMAIN.com/fullchain.pem

Your key file has been saved at: /etc/letsencrypt/live/DOMAIN.com/privkey.pem

Your cert will expire on 2018-03-08. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew all of your certificates, run “certbot-auto renew”

Certbot 提供相关文件的解说信息:

  • 「privkey.pem」 :证书密钥(the private key for your certificate)。
  • 「fullchain.pem」:证书文件(the certificate file used in most server software)。
  • 「chain.pem」:线上凭证状态协定(used for OCSP stapling in Nginx >=1.3.7)。
  • 「cert.pem」:SLL凭证[i](will break many server configurations, and should not be used without reading further documentation)。

在 Linux 的 WEB 服务器中安装 SSL 证书

在取得 Let’s Encrypt 的 SSL 证书后,接下来就是要将证书安装到网页服务器,让网域可以正常使用 https 的加密浏览。

话先说在前面,前面申请 SSL 凭证的步骤虽然是通用的,但是下面的安装步骤会依照你的服务器版本和网页服务器的套件不同,会有许多不同的安装方式,我建议参考下面安装流程,依照自己的服务器种类进行微调更新(下面将以 bitnami 的 WordPress 安装套件为例和大家讲解)!

如果你是直接申请得到 server.crt SSL 凭证证书与 server.key 证书密钥文件,可以直接复制到服务器中的正确位置,例如:

  • sudo cp /etc/lego/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt
  • sudo cp /etc/lego/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key

🔥注意:

  • 「etc/lego/…」路径,请依照你的服务器实际配置修改(例如:「/etc/letsencrypt/live/DOMAIN.com/…」);及
  • 「opt/apache2/…」路径,请依照你的服务器实际配置修改(例如:「/etc/apache2/ssl/…」)。

不过我们透过 Certbot 在 Let’s Encrypt 申请的是经由 PEM 编码(PEM-encoded)的证书颁发机构(Certificate Authority, CA )所生成的「cert.pem」、「fullchain.pem」与「privkey.pem」这三个文件,需要我们进行额外手动编辑,包括:

  • 将「cert.pem」的编码内容复制到「server.crt」;
  • 将「fullchain.pem」的编码内容复制到「server-ca.crt」;
  • 将「privkey.pem」的编码内容复制到「server.key」。

注意,你的服务器中如果没有上述 server 文件,需要你手动建立;有些服务器仅会预先内建「server.crt」和「server.key」两个文件,需要你自行建立「server-ca.crt」证书文件(PEM CA 核发专有的证书文件),并且更新相关 Apache 设定文件(Apache configuration file),例如 httpd.conf,你可以在该文件中发现类似如下配置:

DocumentRoot "/opt/bitnami/apache2/htdocs" SSLEngine on SSLCertificateFile "/opt/bitnami/apache2/conf/server.crt" SSLCertificateKeyFile "/opt/bitnami/apache2/conf/server.key"

这时候需要将下面指令增加到 SSLCertificateKeyFile 下方:

SSLCACertificateFile “/opt/bitnami/apache2/conf/server-ca.crt”

🔥注意:在不同的安装系统中,有可能在相同的路径目录下发现相同名称的 Apache 设定文件,但是其作用却可能不一样,而且存放的信息也可能有异。这得取决于各安装系统的设计思维,很可能会将相关 Aapche 设定文件尤其他文件负责设定。因此请大家务必参考各系统说明书找到 Server.crt 等文件的设定位置与设定文件名称才能完成作业。

完成拷贝动作后,需要重新启动 Apache 服务器:

sudo /etc/init.d/apache2 restart

在重置完成后,这时候应该就能用 HTTPS 的加密浏览模式,开启你的网站(或部落格)了。不过 Let’s Encrypt 的免费 SSL 凭证有著 90 天的使用限制,需要每隔 90 天重新申请一次 SSL 凭证才能让网站保持正常加密浏览服务,这是比较麻烦的地方,不过看在免费的份上就勉强使用吧。

如何更新 SSL 安全性凭证

在登入 Linux 服务器后,移动到 Certbot 的目录下,输入下列指令即可更新凭证文件,之后再将该文件内容依照前面提到的安装步骤进行更新。

./certbot-auto renew

延伸阅读
  1. Certbot: Where are my certificates.
  2. 推荐网站/部落格专用服务器:Bluehost。
✦ 独立报道 · 读者支持 ✦

以实际行动支持独立观点,与我们一同走得更远

每一篇条理清晰的分析、每一次不随波逐流的观察,背后都是对真实与品质的坚持。我们拒绝内容农场与算法流量绑架,坚持自由独立的客观发声。

维持高品质的原创写作与独立运营,需要持续的实质力量。您可以选择一次性赞助或每月定期支持,通过 Google 安全结账,与我们一同守护这份深刻与清醒。

由 Google 安全处理付款 · 可随时在 Google 账户管理或取消