仅在弹簧云微服务实例中使用https

时间:2017-09-08 14:31:36

标签: java spring spring-boot https spring-cloud

为了在所有spring cloud微服务实例之间使用https,我们可以生成一个java密钥库,并使用它来配置每个实例:

server.ssl.key-store=server.jks
server.ssl.key-store-password=<pw>
server.ssl.keyStoreType=jks
server.ssl.keyAlias=tomcat
server.ssl.key-password=<pw>

IIUC就设置ssl传输层而言,我们需要做什么?在相同微服务类型的所有实例中使用相同的密钥库是否可以/安全?例如,边缘服务器可能正在使用功能区在microserviceA - instance1microserviceA - instance2microserviceA - instance3之间进行负载平衡,并且这些内容都将烘焙相同的密钥库。

如果我们还有一个microserviceB,它是否也可以使用相同的密钥库而不会影响安全性?

从管理/ devOps的角度来看,这是最简单的方法吗?

1 个答案:

答案 0 :(得分:3)

对于每个相同微服务的运行实例,SSL证书应该是相同的,并且对于每个微服务(您的微服务A与微服务B)是唯一的。如果您将服务移到硬件负载平衡器后面,那么它将变得很明显。

当/如果您为服务服务调用进行X.509客户端证书身份验证时,您将需要根据它们提供的证书对服务进行身份验证和授权。如果他们都出示相同的证书,那么你就不能这样做。

从devOps的角度来看,您可以通过集中存储证书来节省您的头痛 - 我们将Spring Cloud Config Server与网站后端一起使用 - 并设置工作以每天检查证书的到期日期,以便部署后一年左右,你不会得到令人不快的惊喜。

我们为每个服务使用单独的密钥库/信任库,因为它适合我们的部署模型,但您可以使用具有多个服务别名的单个密钥库,因为内部的私钥可以具有唯一的密码。请注意,并非所有java http框架都能够通过别名选择密钥或支持不同的密钥库/密钥密码......