内容简介: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 后发生启动死循环
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
新媒体革命——在线时代的媒体、公关与传播
仇勇 / 电子工业出版社 / 2016-2-1 / CNY 50.00
这既是传统媒体的大裂变年代,也是在线媒体开启的新闻业的黄金时代。 信息流动的新法则不仅改变了媒体业,也在重塑公关、传播和商业的面貌。总之,这个世界的连接方式不仅不再相同,而且这一改变不可逆转。在这个全新重启的在线时代里,无论是信息的获取还是商业本身,信任都变得比以往更重要。 从告别传统媒体的那一刻起,我就有着两个小小的“野心”:一是探寻适合在线时代的媒体生产方式;二是让优质内容有权获得......一起来看看 《新媒体革命——在线时代的媒体、公关与传播》 这本书的介绍吧!