Java 仅对spring云微服务实例使用https

Java 仅对spring云微服务实例使用https,java,spring,spring-boot,https,spring-cloud,Java,Spring,Spring Boot,Https,Spring Cloud,为了在所有spring cloud microservice实例之间使用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> server.ssl.

为了在所有spring cloud microservice实例之间使用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>
server.ssl.key store=server.jks
server.ssl.key-store-password=
server.ssl.keyStoreType=jks
server.ssl.keyalis=tomcat
server.ssl.key-password=
至于设置ssl传输层,我们需要做的就是这么做?在相同微服务类型的所有实例中使用相同的密钥库是否可以/安全?例如,边缘服务器可以使用Ribbon在
microserviceA-instance1
microserviceA-instance2
microserviceA-instance3
之间实现负载平衡,并且这些都将具有相同的密钥存储库

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


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

对于同一微服务的每个运行实例,SSL证书应该是相同的,并且对于每个微服务(您的微服务与微服务B)都是唯一的。如果您曾经将您的服务转移到硬件负载平衡器之后,那么原因就显而易见了

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

从devOps的角度来看,您可以通过集中存储证书(我们使用带有网站后端的Spring Cloud Config Server)并设置一项每天检查证书到期日期的工作来避免以后的麻烦,这样您就不会在部署一年左右后收到不愉快的惊喜


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

对于同一微服务的每个运行实例,SSL证书应该是相同的,对于每个微服务(您的微服务与微服务B)都是唯一的。如果您曾经将您的服务转移到硬件负载平衡器之后,那么原因就显而易见了

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

从devOps的角度来看,您可以通过集中存储证书(我们使用带有网站后端的Spring Cloud Config Server)并设置一项每天检查证书到期日期的工作来避免以后的麻烦,这样您就不会在部署一年左右后收到不愉快的惊喜


我们对每个服务使用单独的密钥库/信任库,因为这符合我们的部署模型,但您可能可以使用具有多个服务别名的单个密钥库,因为其中的私钥可以具有唯一的密码。但要小心,并非所有java http框架都能够通过别名选择密钥或支持不同的密钥库/密钥密码…

谢谢Andy-很高兴知道-我也在研究如何将所有服务包装在docker swarm上运行的docker容器中-现在看起来我们几乎可以用一个命令创建一个安全的覆盖网络,并允许这需要管理ssl。在这里发布了后续信息:问题:在我的体系结构中,我将nginx作为spring云网关的代理,然后请求被转发到相应的微服务,我只需要在网关上安装ssl,还是在每个微服务上安装ssl?我对此感到困惑。同一个nginx也在运行我的前端应用程序。谢谢Andy-很高兴知道-我还在调查将所有服务包装在docker swarm上运行的docker容器中-现在看起来,我们几乎可以用一个命令创建一个安全的覆盖网络,并允许管理ssl。在这里发布了后续信息:问题:在我的体系结构中,我将nginx作为spring云网关的代理,然后请求被转发到相应的微服务,我只需要在网关上安装ssl,还是在每个微服务上安装ssl?我对此感到困惑。同样的nginx也在运行我的前端应用程序。