在关键的云铸造厂中使用受信任的SSL证书与Spring Boot一起使用

时间:2020-06-24 16:45:59

标签: spring-boot ssl pivotal-cloud-foundry

我不是SSL证书主题的新手,我想安装购买的SSL,这样当用户进入我的网站时,他们不会看到不可信的证书警告,这是我到目前为止所做的步骤

  1. 使用键盘工具创建了一个p12文件
  2. 在步骤1中从文件创建了一个csr文件
  3. 将csr上载到我的ssl供应商,并通过他们对我的域的验证后,下载以下文件:.crt,.ca-bundle,.p7b文件

我将所有文件(包括我自己生成的文件)放置在资源目录中,并添加了以下属性

server.ssl.key-store:classpath:myFile.p12
server.ssl.key-store-password:some_pass
server.ssl.keyStoreType:PKCS12
server.ssl.keyAlias:someAlias

我后来运行了以下命令:keytool -importcert-尝试将我从ssl供应商获得的文件导入到我创建的文件(.p12)

比我创建我的jar并将其上传到关键的云铸造厂,但我仍然看到无效的证书消息

我不知道我是否需要在枢轴平台上做某事或在弹簧引导配置上做某事

1 个答案:

答案 0 :(得分:0)

唯一可行的方法是使用TCP路由。使用Cloud Foundry上的标准HTTP路由,流量首先到达负载均衡器,然后到达Gorouter。 TLS终止将在那里发生,而不是在您的应用程序中发生。如果您使用TCP路由,这将在TCP级别实现负载平衡,并允许您的应用程序直接执行TLS终止。

也就是说,您真的不想这样做。 TCP路由不太可能允许您选择端口443,因为端口只能分配给一个应用程序。这意味着只有一个使用TCP路由的应用程序可以具有端口443。同样,在大多数情况下,平台运营商仅允许TCP路由使用高编号的端口,这意味着没有人可以选择443。长话短说,您不想您的用户必须以https://www.example.com:47385的身份访问您的网站,因此您不需要TCP路由。


要使用标准HTTP路由正确设置此设置,您将需要与平台运营团队合作。在一起,您将需要执行以下操作:

  1. 获取您要使用的域。
  2. 获取负载均衡器。这需要配置为将流量路由到基础中的Gorouters。您可以跳过此步骤并使用现有的负载均衡器,但这将对下面的步骤6产生影响[1]。
  3. 为您的域配置DNS,以便它在步骤2中路由到负载均衡器。
  4. 将域添加为CF中的私有域或共享域。
  5. 使用在步骤3中创建的域将路由映射到您的应用程序。
  6. 将您的TLS证书和密钥添加到负载均衡器[1]。

完成所有这些操作后,到您域的流量将解析为负载均衡器的IP。您的用户的浏览器将向LB发出HTTPS请求,该请求将终止TLS(如果是HTTP /第7层LB),然后转发到Gorouter(如果有TCP /第4层LB,则TLS在此处终止) ),然后依次转发到您的应用程序(基于您映射的路由)。

您的应用程序将需要查看x-forwarded-forx-forwarded-proto标头,以确认请求是否通过HTTPS传入,因为它不会直接终止TLS。

[1]-含义与证书的安装方式有关。使用单独的LB,您将证书添加到其中并完成。如果尝试重用平台LB,则需要将证书添加到现有的证书列表中。另外,如果您的平台运营团队正在使用TCP /第4层负载均衡器,则TLS终止不会在LB处发生,而是会在Gorouter处发生。这意味着您必须将TLS证书加载到Gorouter中,这需要Bosh部署并且需要更多工作。修改平台LB还会带来错误,导致基础崩溃。由于这些原因及更多原因,通常为您的应用添加单独的LB。