• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Nacos支持httphotoshop

武飞扬头像
洒脱的智障
帮助1

Nacos支持https

前言

本文主要整理了Nacos Server如何开启https,以及对于注册发现和客户端负载均衡需要如何适配修改。

软件版本

Spring Boot 2.6.7

Spring Cloud 2021.0.2

Spring Cloud Alibaba 2021.0.1.0

Nacos 2.1.0

测试项目图示

学新通

实现方案

Nacos官方文档中没有明确支持Nacos Server的https,目前参阅部分技术文档,都是通过nginx代理转发来实现的https。这种方式其实没有真正的让Nacos Server开启https,默认我们应该是通过 https://localhost:8848/nacos/index.html 的方式去访问Nacos才算开启https。

其实Nacos是基于Spring Boot项目做的开发,我这边的思路就是对源码做一下定制修改,以Spring Boot支持的方式开启Nacos Server支持https。

Nacos Server的源码是一个maven的聚合工程,有很多子模块,通过源码阅读发现主工程应该是console,所以可以直接修改console模块中的配置文件,加入证书的配置信息,然后源码编译之后重新启动,就可以让Nacos开启https。
学新通
首先生成一份Nacos Server的证书,这边通过keytool命令生成,具体的生成命令可以自行百度一下,也可以参考我之前的博客。
学新通
然后通过github下载nacos源码工程,将证书信息放到console模块的resources目录下:
学新通
之后在console模块的配置文件application.properties中添加如下配置,添加证书信息:

# 支持https
server.ssl.enabled=true
server.ssl.key-alias=nacosServer
server.ssl.key-store=classpath:nacosServer.jks
server.ssl.key-store-type=JKS
server.ssl.key-password=123456

重新执行编译构建,启动nacos,可以在控制台看到nacos已经开启了https:
学新通
通过https访问nacos控制端,访问ok:
学新通

客户端适配

参考官方issue#3654,目前Nacos client已经支持注册到https的server上了,下面也整理下客户端如何注册到Nacos Server上面。

注册发现

首先需要将Nacos Server的证书导出出来,作为客户端的信任证书。可以直接从页面导出或者通过keytool命令从jks文件中导出:
学新通
将导出的证书文件nacosServer.cer放到resources目录下:
学新通
然后通过设置如下几个系统变量,开启客户端校验nacosServer证书:

public static void main(String[] args) {
  loadNacosCertificate();
  SpringApplication.run(NacosHttpsProviderApplication.class, args);
}

// 加载nacos证书
private static void loadNacosCertificate() {
  System.setProperty(TlsSystemConfig.TLS_ENABLE, "true");
  System.setProperty(TlsSystemConfig.CLIENT_AUTH, "true");
  try {
    System.setProperty(TlsSystemConfig.CLIENT_TRUST_CERT, ResourceUtils.getFile("classpath:nacosServer.cer").getCanonicalPath());
  } catch (Exception e) {
    log.error("Init nacosServer cer error", e);
  }
}

自己觉得nacos对于https的适配没有那么好,之前在使用eureka的时候,都是使用类似@ConditionalOnMissingBean这种注解来提供覆盖源码中默认的bean来拓展框架提供的能力,比如加载信任库证书信息等等。

之后修改application.properties配置文件中的spring.cloud.nacos.discovery.server-addr的值,修改为https:

spring.application.name=nacos-https-consumer
server.port=8089
spring.cloud.nacos.discovery.server-addr=https://localhost:8848
spring.cloud.nacos.username=nacos
spring.cloud.nacos.password=nacos

之后启动微服务,注册ok:
学新通

结语

参考:https://github.com/alibaba/nacos/pull/3654

代码地址:https://github.com/yzh19961031/blogDemo/tree/master/nacosDemo

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaaefe
系列文章
更多 icon
同类精品
更多 icon
继续加载