内容简介:Eureka Server 开启 https服务让安全性更上一层楼文章共 591字,阅读大约需要 2分钟 !
Eureka Server 开启 https服务让安全性更上一层楼
文章共 591字,阅读大约需要 2分钟 !
概 述
在我的前文 《Eureka Server 开启Spring Security Basic认证》 中已经给 Eureka Server 开启了最基本的鉴权措施,本文则让 HTTPS加持于 Eureka Server,让安全措施来的更彻底一点。
注:本文首发于 My Personal Blog:CodeSheep·程序羊 ,欢迎光临 小站
证书准备
这里使用 JDK自带的 keytools 来创建证书
- Server 端证书生成
keytool -genkeypair -alias server -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore codesheepserver.p12 -validity 3800
过程如下:
- Client 端证书生成
keytool -genkeypair -alias client -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore codesheepclient.p12 -validity 3800
过程类似,就不再截图了
- 分别导出 server端和 client端的 p12证书
keytool -export -alias server -file codesheepserver.crt --keystore codesheepserver.p12 会要求你输入密码
keytool -export -alias client -file codesheepclient.crt --keystore codesheepclient.p12
导出的证书在此:
- 配置 Client端信任 Server端的证书
keytool -import -alias server -file codesheepserver.crt -keystore codesheepclient.p12
过程如下:
- 配置 Server端信任 Client端的证书
keytool -import -alias client -file codesheepclient.crt -keystore codesheepserver.p12
过程与上面类似,也不截图展示了
证书文件准备妥当之后,接下来进行项目代码级别的配置
Eureka Server SSL配置
我们需要在 Eureka Server的 Spring Boot项目中的 application.yml
配置文件里将上文中生成的证书配到项目中去,即下面这段配置中与 server.ssl
相关的部分:
server: port: 1111 ssl: enabled: true key-store: classpath:codesheepserver.p12 key-store-password: codesheep.cn key-store-type: PKCS12 key-alias: server eureka: instance: hostname: localhost securePort: 1111 securePortEnabled: true nonSecurePortEnabled: false client: registerWithEureka: false fetchRegistry: false
Eureka Client SSL配置
类似地,我们也在 Eureka Client的 Spring Boot项目中的 application.yml
配置文件里将上文中生成的证书配到项目中去:
server: port: 1112 spring: application: name: eureka-client eureka: client: securePortEnabled: true serviceUrl: defaultZone: https://localhost:1111/eureka/ ssl: key-store: codesheepclient.p12 key-store-password: codesheep.cn
但注意此处的 ssl.key-store
和 ssl.key-store-password
只是我们自定义的属性,我们需要结合自己编写的 ssl配置类 EurekaClientHttpsCfg
来进行使用,代码如下:
@Configuration public class EurekaClientHttpsCfg { @Value("${ssl.key-store}") String keyStoreFileName; @Value("${ssl.key-store-password}") String keyStorePassword; @Bean public DiscoveryClient.DiscoveryClientOptionalArgs discoveryClientOptionalArgs() throws CertificateException, NoSuchAlgorithmException, KeyStoreException, IOException, KeyManagementException { EurekaJerseyClientImpl.EurekaJerseyClientBuilder builder = new EurekaJerseyClientImpl.EurekaJerseyClientBuilder(); builder.withClientName("eureka-client"); SSLContext sslContext = new SSLContextBuilder() .loadTrustMaterial( this.getClass().getClassLoader().getResource(keyStoreFileName),keyStorePassword.toCharArray() ) .build(); builder.withCustomSSL(sslContext); builder.withMaxTotalConnections(10); builder.withMaxConnectionsPerHost(10); DiscoveryClient.DiscoveryClientOptionalArgs args = new DiscoveryClient.DiscoveryClientOptionalArgs(); args.setEurekaJerseyClient(builder.build()); return args; } }
这段代码的主要意图就是通过设置一个 SSLContext用于 Eureka Client访问 Eureka Server。
实验验证
- 启动 Eureka Server,由于其开启了 https访问,因此浏览器以非 https方式访问时就不通了
浏览器必须以 https方式访问注册中心方可:
- 启动 Eureka Client后,由于其已经加入了对 https的配置,因此可以验证通过并且注册到 Eureka Server注册中心:
如此一番实践下来,微服务注册中心的安全性就更进了一步。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 怎样在服务器上启用 HTTPS
- 看我如何在目标设备上启用远程桌面服务
- 如何以编程方式启用/禁用Android中的辅助功能服务
- 如何在 Debian服务器 上启用双因子身份验证
- 国际资讯 微软Azure中东首个云服务可用区启用
- 关于 Dell 11 和 12 代服务器启用 Hyper-V 2019 后发生启动死循环
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Impractical Python Projects
Lee Vaughan / No Starch Press / 2018-11 / USD 29.95
Impractical Python Projects picks up where the complete beginner books leave off, expanding on existing concepts and introducing new tools that you’ll use every day. And to keep things interesting, ea......一起来看看 《Impractical Python Projects》 这本书的介绍吧!