首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Spring Cloud Netflix Eureka进行安全发现

构建基于Spring Cloud Netflix Eureka的标准发现机制相当容易。在发现客户端和服务器之间通过安全SSL通信构建的相同解决方案可能是稍微更先进的挑战。然而我没有在网上找到相关这样的应用程序的完整示例。让我们尝试从服务器端应用程序开始实现它。

1.生成证书

如果您开发Java应用程序已有几年了,您可能已经听说过keytool。此工具位于您的 目录中,用于管理密钥和证书。我们认为服务器端SpringBoot应用程序生成密钥库开始。这是适当的keytool命令,在JKS密钥存储文件中生成名为eureka.jks的证书。

2.设置安全发现服务器

由于Eureka服务器嵌入到Spring Boot应用程序中,我们需要使用标准的Spring Boot属性来保护它。我将生成的密钥库文件eureka.jks放在应用程序的类路径上。现在,唯一需要做的就是在 该配置文件内准备一些配置,设置到密钥库文件的位置,类型和访问密码。

3.设置双向SSL身份验证

我们会稍微复杂一下我们的例子。标准SSL配置假定只有客户端验证服务器证书。我们将在服务器端强制进行客户端的证书身份验证。它可以通过设置属性 为`need```来实现。

并非全部,因为我们还必须将客户端的证书添加到服务器端的可信证书列表中。因此,首先让我们使用与服务器密钥库相同的keytool命令生成客户端的密钥库。

现在,我们需要从客户端和服务器端的生成密钥库中导出证书。

最后,我们将客户端的证书导入服务器的密钥库,并将服务器的证书导入客户端的密钥库。

4.运行安全的Eureka服务器

示例应用程序可在GitHub上的repository sample-secure-eureka-discovery中获得。运行服务发现应用程序,Eureka的地址是localhost:8761如果你/您尝试访问它的web仪表板,则在Web浏览器中你将得到如下异常。这意味着Eureka服务器是安全的。

好吧,Eureka仪表板有时是一个有用的工具,所以让我们将客户端的密钥库导入我们的Web浏览器以便能够访问它。我们必须将客户端的密钥库从JKS转换为PKCS12格式。这是执行上述操作的命令

5.客户端的应用程序配置

6.在客户端启用HTTPS

上一步中提供的配置仅适用于发现客户端和Eureka服务器之间的通信。如果我们还希望保护客户端应用程序公开的HTTP端点,该怎么办?第一步与发现服务器完全相同:我们需要生成密钥库并使用内部的Spring Boot属性进行设置 。

7.运行客户端的应用程序

最后,我们可以运行客户端应用程序。启动后,应在Eureka Dashboard中显示该应用程序。

所有客户端应用程序的端点都在Eureka的HTTPS协议下注册。我还覆盖了执行器端点的默认实现/info,如下面的代码片段所示。

现在,我们可以尝试再次访问/info端点。您应该看到与以下相同的信息。

或者,如果您尝试在客户端设置服务器端不信任的证书,则在启动客户端应用程序时将看到以下异常。

8.结论

保护微服务和Eureka服务器之间的连接只是保护整个系统的第一步。我们需要关于微服务和配置服务器之间的安全连接,以及与 OpenFign客户端进行服务间通信期间的所有微服务之间的安全连接。你可以在我的书“掌握Spring Cloud”中找到这样的实现的示例,以及更多。

作者:PiotrMińkowski

关注公众号

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190111B06YDK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券