我如何在 Lightsail 上托管的 Bitnami 堆栈中安装 Let's Encrypt SSL 证书?

5 分钟阅读
0

我想在具有 Bitnami 堆栈的 Amazon Lightsail 实例中为我的网站安装通配符 SSL 证书。

简述

有关如何安装不同实例蓝图或标准证书的信息,请参阅以下 AWS Knowledge Center 文章:

解决方法

在 Bitnami 托管的 Lightsail 实例上安装通配符 Let's Encrypt SSL 证书的步骤取决于您的域使用的 DNS 提供商。请检查您的 DNS 提供商是否在 Lego 网站上的 DNS 提供商中列出。然后,选择适当的方法:

  • 如果您的域使用的是其中一个列出的 DNS 提供商,使用 Bitnami 提供的 Lego 工具。
  • 如果您的域没有使用列出的 DNS 提供商,则使用 Certbot 包。

**注意:**根据您的 Bitnami 堆栈使用的是原生 Linux 系统包(方法 A)还是自包含安装(方法 B),文件路径可能会发生变化。最新的 Bitnami WordPress 蓝图仅对方法 A 可用。

要确定 Bitnami 的安装类型,运行以下命令:

test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."

Lego 工具

Bitnami 提供 bncert-tool 和 Lego 工具。Lego 工具支持创建通配符 SSL 证书。bncert-tool 不支持创建通配符 SSL 证书。

**注意:**在以下示例中,DNS 提供商是 Amazon Route 53 和 Amazon Lightsail。

要使用 Lego 工具安装通配符 Let's Encrypt SSL 证书,请完成以下步骤:

  1. 创建具有编程访问权限的 AWS Identity and Access Management (IAM) 用户。要确定 Lego 完成 DNS 质询所需的 IAM 用户权限,请参见 Lego 网站上的 IAM 策略示例

  2. 要在 nano 编辑器中打开 /root/.aws/credentials 文件,运行以下命令:

    sudo mkdir /root/.aws
    sudo nano /root/.aws/credentials
  3. 在凭证文件中输入以下几行:

    [default]
    aws_access_key_id = AKIA************E
    aws_secret_access_key = 1yop**************************l
    region = us-east-1

    **注意:**将 aws_access_key_idaws_secret_access_key 替换为您的值。将 us-east-1 替换为您的 Lightsail 实例的 AWS 区域。

  4. 要保存文件,按 Ctrl + X,然后按 y,最后按 Enter

  5. 如果您的 Bitnami 实例不包含 /opt/bitnami/letsencrypt/ 目录,运行以下命令手动安装 Lego 客户端:

    cd /tmp
    curl -Ls https://api.github.com/repos/xenolf/lego/releases/latest | grep browser_download_url | grep linux_amd64 | cut -d '"' -f 4 | wget -i - -O lego.tar.gz
    tar xzf lego.tar.gz
    sudo mkdir -p /opt/bitnami/letsencrypt
    sudo mv lego /opt/bitnami/letsencrypt/lego
  6. 要在服务器中创建通配符 Let's Encrypt 证书,根据您的服务器类型运行以下命令:
    Route 53 名称服务器:

    sudo /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns route53 --path="/opt/bitnami/letsencrypt" run

    Lightsail 名称服务器:

    sudo DNS_ZONE=DOMAIN /opt/bitnami/letsencrypt/lego --email="EMAIL-ADDRESS" --domains="DOMAIN" --domains="*.DOMAIN" --dns lightsail --path="/opt/bitnami/letsencrypt" run

    注意:EMAIL-ADDRESS 替换为您想要接收证书更新的电子邮件地址。将 DOMAIN 替换为您的域名。
    SSL 证书和私钥在以下位置生成:
    /opt/bitnami/letsencrypt/certificates/DOMAIN.crt
    /opt/bitnami/letsencrypt/certificates/DOMAIN.key

  7. 要停止 Bitnami 堆栈服务,运行以下命令:

    sudo /opt/bitnami/ctlscript.sh stop
  8. 根据您的服务器和方法,将 SSL 证书和证书密钥文件链接到您的 Web 服务器当前读取的位置:
    Apache,方法 A

    sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
    sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/bitnami/certs/server.key
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt

    Apache,方法 B

    sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
    sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
    sudo mv /opt/bitnami/apache2/conf/server.csr /opt/bitnami/apache2/conf/server.csr.old
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/apache2/conf/server.key
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/apache2/conf/server.crt

    NGINX,方法 A

    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/bitnami/certs/server.key
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt

    NGINX,方法 B

    sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
    sudo mv /opt/bitnami/nginx/conf/server.csr /opt/bitnami/nginx/conf/server.csr.old
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.key /opt/bitnami/nginx/conf/server.key
    sudo ln -sf /opt/bitnami/letsencrypt/certificates/DOMAIN.crt /opt/bitnami/nginx/conf/server.crt

    **注意:**对于上述命令,将 DOMAIN 替换为您的域名。

  9. 要启动 Bitnami 堆栈服务,运行以下命令:

    sudo /opt/bitnami/ctlscript.sh start
  10. 要自动续订证书,运行以下命令打开 crontab 编辑器:

sudo crontab -e -u bitnami

**注意:**Let's Encrypt 证书的有效期为 90 天。 在 crontab 文件中输入以下行,然后保存文件:
Apache

0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN"  --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/apache/bin/httpd -f /opt/bitnami/apache/conf/httpd.conf -k graceful

Nginx

0 0 * * * sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt --email="EMAIL-ADDRESS" --domains="DOMAIN"  --domains="*.DOMAIN" --dns DNS renew >> /var/log/letsencrypt.log 2>&1 && sudo /opt/bitnami/nginx/sbin/nginx -c /opt/bitnami/nginx/conf/nginx.conf -s reload

**注意:**将 EMAIL-ADDRESSDOMAINDNS 替换为您的值。 设置 HTTPS 重定向。有关更多信息,请参阅 Bitnami 网站上的使用 Apache 执行 HTTPS 重定向使用 NGINX 执行 HTTPS 重定向

Certbot 包

先决条件:

  • 安装 Certbot
  • 确定您的 Linux 发行版。对于 Bitnami 托管的实例,Linux 发行版要么是 Debian,要么是 Ubuntu。运行以下命令以确认您的 Linux 发行版:
    cat /etc/os-release | grep -i ^id
    **注意:**此方法不支持自动证书续订。

要使用 Certbot 包安装通配符 Let's Encrypt SSL 证书,请完成以下步骤:

  1. 启动 Linux GNU 屏幕会话。由于在域的 DNS 提供商中添加 TXT 记录需要时间,因此会话可能会超时。最佳做法是在 Linux GNU 屏幕中运行命令,这样会话不会超时。要启动屏幕会话,运行以下命令:

    screen -S letsencrypt
  2. 要启动 Certbot 交互模式,运行以下命令:

    sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

    **注意:**将 example.com 替换为您的值。
    如果您收到错误响应,如 "bash: certbot: command not found",您可能需要将 /bin/snap 添加到 PATH 环境变量。首先,输入 "exit" 并按 Enter。或者,按 Ctrl + D 退出屏幕会话。然后,编辑 /etc/environment,在列表中添加 /snap/bin。重启系统。要确认再没有发生错误,运行以下命令:

    $ certbot -h
  3. 复制 Let's Encrypt 提供的 TXT 记录。Let's Encrypt 会提供一个或多个 TXT 记录,您必须使用这些记录进行验证。

  4. 将提供的记录添加到您的域的 DNS 中。
    重要说明: 在确认 TXT 记录已传播到互联网 DNS 之前,不要按 Enter。另外,不要按 Ctrl + D,因为此操作会终止屏幕会话。

  5. 要确认记录已经传播,通过 MxToolbox 网站上的 DNS 文本查找查找 TXT 记录:

    _acme-challenge.example.com

    **注意:**将 example.com 替换为您的值。
    如果您的 TXT 记录已传播,您会在页面上看到 TXT 记录值。返回上一个屏幕,按 Enter

  6. 如果您已被从 Shell 中删除,运行以下命令返回 Shell:

    Screen -r SESSIONID

    **注意:**运行 screen -ls 命令获取会话 ID。

  7. (可选)如果出现提示,重复前面的步骤添加另一个 TXT 记录。
    **注意:**如果您为 DNS 提供商使用 Route 53,每行输入一个 TXT 值。编辑 TXT 记录,然后在一个新行中添加 certbot 提供的 TXT 值。

  8. 保存 SSL 证书和密钥文件的文件位置。SSL 证书生成后,您会收到 "Successfully received certificate" 消息。

  9. 要配置您的 Web 服务器,使用此证书,根据您的服务器和方法运行以下命令:
    Apache,方法 A

    sudo /opt/bitnami/ctlscript.sh stop
    sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.crt /opt/bitnami/apache2/conf/bitnami/certs/server.crt.old
    sudo mv /opt/bitnami/apache2/conf/bitnami/certs/server.key /opt/bitnami/apache2/conf/bitnami/certs/server.key.old
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/bitnami/certs/server.key
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/bitnami/certs/server.crt
    sudo /opt/bitnami/ctlscript.sh start

    Apache,方法 B

    sudo /opt/bitnami/ctlscript.sh stop
    sudo mv /opt/bitnami/apache2/conf/server.crt /opt/bitnami/apache2/conf/server.crt.old
    sudo mv /opt/bitnami/apache2/conf/server.key /opt/bitnami/apache2/conf/server.key.old
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/apache2/conf/server.key
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/apache2/conf/server.crt
    sudo /opt/bitnami/ctlscript.sh start

    NGINX,方法 A

    sudo /opt/bitnami/ctlscript.sh stop
    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.crt /opt/bitnami/nginx/conf/bitnami/certs/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/bitnami/certs/server.key /opt/bitnami/nginx/conf/bitnami/certs/server.key.old
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/bitnami/certs/server.key
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/bitnami/certs/server.crt
    sudo /opt/bitnami/ctlscript.sh start

    NGINX,方法 B

    sudo /opt/bitnami/ctlscript.sh stop
    sudo mv /opt/bitnami/nginx/conf/server.crt /opt/bitnami/nginx/conf/server.crt.old
    sudo mv /opt/bitnami/nginx/conf/server.key /opt/bitnami/nginx/conf/server.key.old
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/privkey.pem /opt/bitnami/nginx/conf/server.key
    sudo ln -sf /etc/letsencrypt/live/DOMAIN/fullchain.pem /opt/bitnami/nginx/conf/server.crt
    sudo /opt/bitnami/ctlscript.sh start

    **注意:**对于上述命令,将 DOMAIN 替换为您的域名。

  10. 设置 HTTPS 重定向。有关更多信息,请参阅 Bitnami 网站上的使用 Apache 执行 HTTPS 重定向使用 NGINX 执行 HTTPS 重定向

AWS 官方
AWS 官方已更新 1 年前