Eureka Server启用 https服务指北

  • 时间:2018-12-12 23:39 作者:CodeSheep 来源:CodeSheep 阅读:641
  • 扫一扫,手机访问
摘要:New Mac Mini文章共 591字,阅读大约需要 2分钟 !概 述在我的前文《Eureka Server 开启Spring Security Basic认证》中已经给 Eureka Server 开启了最基本的鉴权措施,本文则让 HTTPS加持于 Eureka Server,让安全措施来的更彻
New Mac Mini

文章共 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

过程如下:

Server 端证书生成过程
  • 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 会要求你输入密码
导出 server端的 p12证书
keytool -export -alias client -file codesheepclient.crt --keystore codesheepclient.p12

导出的证书在此:

导出 client端的 p12证书
  • 配置 Client端信任 Server端的证书
keytool -import -alias server -file codesheepserver.crt -keystore codesheepclient.p12

过程如下:

配置 Client端信任 Server端的证书
  • 配置 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: servereureka:  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: 1112spring:  application:    name: eureka-clienteureka:  client:    securePortEnabled: true    serviceUrl:      defaultZone: https://localhost:1111/eureka/ssl:  key-store: codesheepclient.p12  key-store-password: codesheep.cn

但注意此处的 ssl.key-storessl.key-store-password只是我们自己设置的属性,我们需要结合自己编写的 ssl配置类 EurekaClientHttpsCfg来进行使用,代码如下:

@Configurationpublic 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的方式是无法访问注册中心的

浏览器必需以 https方式访问注册中心方可:

以 https方式访问注册中心方可
  • 启动 Eureka Client后,因为其已经加入了对 https的配置,因而可以验证通过并且注册到 Eureka Server注册中心:
服务已经注册上来

如此一番实践下来,微服务注册中心的安全性就更进了一步。


后 记

因为能力有限,若有错误或者者不当之处,还请大家批评指正,一起学习交流!

  • My Personal Blog:CodeSheep 程序羊
  • 我的半年技术博客之路


  • 全部评论(0)
最新发布的资讯信息
【系统环境|】从谷歌到手机厂商都下决心了,要清除32位应用这匹“害群之马”(2025-10-17 05:41)
【系统环境|】Windows上使用QEMU创建aarch64(ARM64)虚拟机(2025-10-17 05:40)
【系统环境|】nodejs 如何安装在aarch64平台(2025-10-17 05:39)
【系统环境|】常用git命令-从远程更新代码合并分支、提交代码等(2025-10-17 05:38)
【系统环境|】技术干货|常用的 Git 功能和选项(2025-10-17 05:38)
【系统环境|】掌握git命令,图解一目了然(2025-10-17 05:37)
【系统环境|】总结几个常用的Git命令的使用方法(2025-10-17 05:36)
【系统环境|】这篇 Git 教程太清晰了,很多 3 年经验程序员都收藏了(2025-10-17 05:35)
【系统环境|】Git常用命令及操作指南(2025-10-17 05:35)
【系统环境|】「实用」盘点那些开发中最常用的Git命令(2025-10-17 05:34)
手机二维码手机访问领取大礼包
返回顶部