nginx - 有关 Nginx 如何在 Google 计算引擎上使用 SSL 的详细信息
问题描述
我已成功将我的 Spring Boot 应用程序部署到 Ubuntu 18.04 上的 Compute Engine,它位于 Nginx 代理之后,但当前 Nginx 正在侦听 80 端口,即 http。我需要设置安全连接。我对一些细节有疑问,我对此很陌生,到目前为止我所做的只是在 IDE 中的 Windows 上编写 spring boot/react js 应用程序。
- 是否有必要为我的计算引擎购买一个域,或者我可以为计算引擎的外部 IP制作 SSL ?在计算引擎上只部署了后端 rest api,前端在 Netlify 上并且它已经在工作了。我不需要一个好听的后端域名,因为用户不会看到它,只有前端应用程序会使用我的计算引擎的外部 ip从后端获取数据。
- 我在 Nginx 的设置中看到了设置 SSL 的指南,这是为什么呢?请求不是首先到达计算引擎的外部 ip,然后才到达 Nginx 吗?计算引擎的工作不是通过向前端发送公钥和证书来进行安全连接,然后才将请求中继到 Nginx 吗?还是计算引擎只是简单地将收到的 https 请求转发给 Nginx,而不对其进行保护/发送任何密钥和证书?
如果您有任何建议,您可以提供一些建议,我只是想与我的后端 spring boot 应用程序建立安全连接,该应用程序位于谷歌计算引擎上的 Nginx 后面,目前仅适用于 HTTP,但不适用于 HTTPs。
解决方案
1 . 从技术上讲,您可以拥有公共 IP 的 SSL 证书,但很少使用。您可以在RFC 5280和这个问题中找到更多详细信息。
请记住,如果您的 IP 地址更改,您的 SSL 证书将变得毫无用处。
我检查了一些 SSL 提供商,发现您应该是 IP 的所有者才能获得此类 SSL 证书:
- 根据geocerts发布的文章在 SSL 证书中使用 IP 地址:
如果您决定在您的证书中确实需要一个 IP,则需要考虑特定的规定、条件和限制。对于大多数人来说,最大的障碍是 IP 地址必须专门分配给您的公司或组织(而不是您的 ISP 或托管服务提供商),并通过 IP WHOIS 查找进行验证。
非常常见的问题:是否可以为 IP 地址(而不是域名)颁发 SSL 证书?对的,这是可能的。但是,有几个要求:
- 只能颁发OV SSL证书;
- 公司必须拥有 IP 地址(根据 IP 地址的 WHOIS 信息进行验证)。
IP 地址 SSL 证书直接与提交的 IP 地址保护连接。虽然 SSL 证书通常颁发给完全限定域名 (FQDN),但某些组织可能需要保护 IP 地址。
根据RIPE的记录,只能使用公共 IP 地址,并且您必须是该 IP 地址的所有者。
结果,实际上,在 GCE VM 实例的情况下几乎不可能,并且更容易继续使用域证书。
2 . 在 GCE 中,与 VM 实例的外部 IP 的所有连接都直接传递到 VM 实例。GCE 无法自行保护连接。您应该在 VM 实例上配置 SSL 证书。您可以在文档VPC 网络概述和IP 地址中找到更多详细信息。
此外,您可以在外部 HTTP(S) 负载平衡器上使用Google 管理的 SSL 证书或自己的 SSL 证书。
推荐阅读
- ios - 共享扩展 - 在 iOS 中获取图像的 exif 数据/元数据(位置)
- redux - 是否可以乐观地更新端点的所有缓存?
- flutter - 如何在颤振/飞镖的多级下拉菜单中使用此 Json
- python - 缺失数据的循环功能
- reactjs - React native - NetInfo 总是得到相同的数据
- laravel-8 - 如何使用 laravel excel 导出大量行
- visual-studio - 在 Microsoft Visual Studio 2019 中禁用 LUA 的 Intellisense
- content-management-system - 如何更改 Drupal 8 中单个表单字段的表单验证错误消息
- angular - 如何将 Admin Press Angular 10 Bootstrap 仪表板模板与 Angular 和 Asp.Net 样板应用程序集成
- json - 在 Golang 中编组结构时可以跳过 json 标记吗?