让 SSL 在 Google 具有虚拟机实例 运行 网络服务器 (nginx) 的计算引擎上工作?

Get SSL to work on Google Compute Engine with a VM Instance running a webserver (nginx)?

我对 Google Compute Engine 有点陌生,我设法让一个带有 nginx 的网络服务器在我的 google 域上工作并安装了 WordPress。 HTTP 访问正常。现在我也想让 HTTPS 工作。

我注意到我没有 SSL 运行,所以我最终使用了 cloudflare,对我的 nginx 服务器进行了必要的更改,还更改了 [=25= 上我的网络服务器 IP 地址的名称服务器] 计算引擎。那很好用。尽管如此,访问IP地址而不是域名时仍然存在一些错误(400 Bad Request No required SSL certificate was sent nginx/1.18.0 (Ubuntu)).

所以,我听说 Google 可以在我的 google 域上执行 SSL,但我真的对文档感到困惑,https://cloud.google.com/appengine/docs/standard/python/securing-custom-domains-with-ssl?authuser=2#upgrading_to_managed_ssl_certificates。它讨论了 Google App Engine,但我还没有找到将 SSL 证书应用于我的 Google Compute Engine 实例的文档。虽然,我在那里添加了一个自定义域,但它指向的 IP 地址与我在 Google Compute Engine 上的网络服务器不同。这肯定不是正确的方法?

因此,有谁知道如何使用 Google Compute Engine 上的 VM 实例从 Google 获取 SSL 以在我的网络服务器上工作?

(自言自语:https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04

在 Compute Engine 上设置 SSL 非常容易。

第 1 步:域名

确定您需要哪些域名的 SSL 证书。通常你想要两个。裸域 (example.com) 和区域 www (www.example.com)。将 example.com 替换为您的实际域名。

注意:Let's Encrypt 不会为 IP 地址颁发 SSL 证书。这也意味着您无法使用指定 IP 地址而不是域名的 SSL 访问您的 Web 服务器。尝试这样做会产生错误:https://my-ip-address.com

第 2 步:设置 DNS

将您的 DNS 服务器更改为直接指向您的 Compute Engine 实例保留的静态 IP 地址。此时,不要使用 CloudFlare。 Let's Encrypt 将直接与您的 Nginx Web 服务器对话。确认每个域名都配置正确,并且您可以通过 HTTP 访问您的站点 (http://example.com and http://www.example.com)。

以下说明是 OS 相关的,适用于基于 Debian 的系统,例如 Debian 和 Ubuntu。 CentOS、Red Hat等

也有类似步骤

第 3 步:安装 Certbot

Certbot 是 Let's Encrypt 的软件代理。这需要在您的系统上安装 Python3。大多数 Google 云实例安装了 Python 3 个。

运行 在您的 VM 实例上执行以下命令:

  • sudo apt 更新
  • sudo apt upgrade -y
  • sudo apt install certbot python3-certbot-nginx

第 4 步:VPC 防火墙

确保 Google 云 VPC 防火墙允许端口 80 和 443。

Using firewall rules

第 5 步:颁发 SSL 证书

运行 在您的 VM 实例上执行以下命令。将 example.com 替换为您的域名。

总结

您的服务器现在配置了 SSL。 SSL 证书将自动更新。如果您不更改域名或 DNS 服务器设置,SSL 将继续发挥作用。

将来,您可能会决定将 SSL 证书卸载到其他服务,例如 Cloudflare 或 Google HTTP(S) 负载均衡器。我建议了解如何直接在您的实例上设置 SSL,以便端到端加密。然后您可以决定 SSL 卸载、缓存、负载平衡、自动缩放和更多选项。