如何在 Amazon Lightsail 上托管的 Bitnami 堆栈上安装 SSL 证书?

上次更新时间:2020 年 4 月 3 日

如何在 Amazon Lightsail 上托管的 Bitnami 堆栈上安装 SSL 证书?

简要描述

您可以使用 Lego 客户端生成一个免费的 Let's Encrypt 证书。要了解有关 Let's Encrypt 及 Lego 客户端的更多信息,请参阅 GitHub 网站上 Let's Encrypt client 及 ACME 库 的相关内容。

解决方案

创建一个 Lightsail 实例

1.    打开 Lightsail 控制台,然后选择 创建实例

2.    选择 Linux 平台,选择 WordPress 蓝图,然后选择 创建实例

3.    创建一个静态 IP 地址并将其连接到该实例。在以下示例中,静态 IP 地址为 192.0.2.0

4.    创建一个地址 (A) 记录,并将其从域指向 IP。

5.    使用主机命令进行 DNS 查询以确认域是否已映射到此静态 IP:

$ host example.ie
example.ie has address 192.0.2.0

6.    在 Web 浏览器中输入您的域,并验证其是否仅可通过 HTTP 、而不可通过 HTTPS 访问。

运行 Bitnami HTTPS 配置工具

该 Bitnami HTTPS 配置工具包含在 2019 年 5 月 10 日之后发布的 Bitnami 堆栈上的/opt/bitnami/letsencrypt/directory 。该工具可自动执行以下流程:

在 Bitnami 堆栈上配置 HTTPS 证书
创建证书自动续订
设置 HTTP 重定向至 HTTPS

运行以下命令以启动 Bitnami HTTPS 配置工具:

sudo /opt/bitnami/bncert-tool

要了解关于使用此工具的更多信息,或要下载此工具,请参阅 Bitnami 文档网站上 了解 Bitnami HTTPS 配置工具 的相关内容。

(可选)手动生成和配置 Let's Encrypt 证书

如果您未安装 Bitnami HTTPS 配置工具,或 /opt/bitnami/letsencrypt/directory缺失,您可以手动生成和配置 Let's Encrypt 证书。

有关手动创建和配置 Let's Encrypt 证书的说明,请参阅 Bitnami 文档网站上 为 Bitnami 应用程序生成和安装 Let's Encrypt SSL 证书的替代方法 的相关内容。

注意: Let's Encrypt Lego SSL 证书由 Lego 客户端生成。较旧版本的 Bitnami 可能未安装此客户端。要验证是否已安装 Lego 客户端,可搜索 /opt/bitnami/letsencrypt/ 目录:

ls -l /opt/bitnami/letsencrypt/
total 29244
-rwxr-xr-x 1 root root 29940480 Apr 18 18:42 lego
drwxr-xr-x 2 root root   4096 Apr 30 10:44 scripts

(可选)手动配置 HTTP 重定向至HTTPS

要强制 HTTP 重定向至 HTTPS,请编辑Apache 配置文件的虚拟主机部分。有关 Bitnami WordPress 映像的文件位于 /opt/bitnami/apache2/conf/bitnami/bitnami.conf

1.    编辑 Apache 配置以包含以下行:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

下面的示例说明了如何来编辑 Apache 配置:

$ sudo vi /opt/bitnami/apache2/conf/bitnami/bitnami.conf
  DocumentRoot "/opt/bitnami/apache2/htdocs"
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R,L]

2.    重新启动 Bitnami 服务以使更改生效:

$ sudo /opt/bitnami/ctlscript.sh restart
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd stopped
/opt/bitnami/php/scripts/ctl.sh : php-fpm stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql stopped
/opt/bitnami/mysql/scripts/ctl.sh : mysql  started at port 3306
/opt/bitnami/php/scripts/ctl.sh : php-fpm started
Syntax OK
/opt/bitnami/apache2/scripts/ctl.sh : httpd started at port 80

您可以从命令行运行以下命令以确认HTTP 已重定向至 HTTPS:

$ curl -Ilkv example.ie
* Rebuilt URL to: example.ie/
*   Trying 192.0.2.0...
* TCP_NODELAY set
* Connected to example.ie (192.0.2.0) port 80 (#0)
> HEAD / HTTP/1.1
> Host: example.ie
> User-Agent: curl/7.53.1
> Accept: */*
> 
< HTTP/1.1 302 Found
HTTP/1.1 302 Found
< Date: Thu, 20 Jun 2019 14:53:04 GMT
Date: Thu, 20 Jun 2019 14:53:04 GMT
< Server: Apache
Server: Apache
< X-Frame-Options: SAMEORIGIN
X-Frame-Options: SAMEORIGIN
< Location: https://example.ie/
Location: https://example.ie/
< Content-Type: text/html; charset=iso-8859-1
Content-Type: text/html; charset=iso-8859-1
* Connection #0 to host example.ie left intact

这篇文章对您是否有帮助?

我们可以改进什么?


需要更多帮助?