Nacos支持https

这篇具有很好参考价值的文章主要介绍了Nacos支持https。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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支持https

实现方案

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支持https
首先生成一份Nacos Server的证书,这边通过keytool命令生成,具体的生成命令可以自行百度一下,也可以参考我之前的博客。
Nacos支持https
然后通过github下载nacos源码工程,将证书信息放到console模块的resources目录下:
Nacos支持https
之后在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:
Nacos支持https
通过https访问nacos控制端,访问ok:
Nacos支持https

客户端适配

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

注册发现

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

结语

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

代码地址:https://github.com/yzh19961031/blogDemo/tree/master/nacosDemo文章来源地址https://www.toymoban.com/news/detail-467511.html

到了这里,关于Nacos支持https的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 支持https访问

    1. 打开自己的云服务器的 80 和 443 端口 打开某为云官网 https://console.huaweicloud.com/ 2. 安装 nginx 3. 安装 snapd 4. 安装 certbot 5. 生成证书 6. 拷贝生成的证书到项目工作目录 7. 修改 main.go 程序如下 8. 编译程序 9. 启动程序 10. 使用 https 和端口 8081 访问页面成功 但是现在只能通过 ht

    2024年02月12日
    浏览(64)
  • Postman支持https

    Postman是web API调试的利器,不仅支持HTTP,也支持HTTPS等协议。 下面以访问ES数据库为例演示https的配置方式。 首先在postman地址栏中输入正确的URL,然后点击 \\\"Settings\\\"。 在 \\\"Settings\\\" 弹出框中的 \\\"General\\\" 页面激活 \\\"SSL certificate verification\\\"  在 \\\"Settings\\\" 弹出框中的 \\\"Certificates\\\" 页面指定

    2024年02月04日
    浏览(65)
  • flask项目支持https

    1.flask-sslify安装与使用 2.密钥使用 ssl_context 参数指定了 SSL/TLS 证书的路径和密钥文件的路径 在SSL中,公钥、私钥、证书(pem、crt、cer、key、csr)的后缀名分别是: 公钥:.pem、.crt、.cer 私钥:.key 证书签名请求:.csr 其中,.pem是一种通用的证书格式,可以包含公钥、私钥、证书信

    2024年02月17日
    浏览(25)
  • 源码编译nginx支持https

    编译openssl 从github下载指定版本的源码 https://github.com/openssl/openssl/releases 下载后解压 tar -zcvf openssl-3.1.1.tar.gz 进入文件夹后配置 cd openssl-3.1.1 ./Configure --prefix=/data/projects/build/openssl-3.1.1 --prefix参数指定路径 执行编译 make -j8 不需要安装到系统,此时当前目录下面会有 libssl.so和l

    2024年02月13日
    浏览(47)
  • 如何用https协议支持小程序

    登录数字证书管理服务控制台。 在左侧导航栏,单击 SSL 证书 。 在 SSL证书 页面,定位到目标证书,在 操作 列,单击 下载 。 在 服务器类型 为Nginx的 操作 列,单击 下载 。 解压缩已下载的SSL证书压缩包。 根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同

    2024年02月13日
    浏览(28)
  • 基于netty+springCloudGateWay+nacos 实现的聊天室(可支持集群)

    1.基于需要实现一个IM 就记录一下 。 1.将websocket 注册到 nacos 服务上 也是IM 注册到nacos 上  借助rabbitmq 实现集群以及redis 实现记录离线消息具体看代码文字懒得写(里面自己还尝试换了 zookeeper 作为注册中心 仅供学习)IM 和 网关的 目录: 整个逻辑是启动服务将websocket,网关

    2023年04月08日
    浏览(75)
  • Maven配置阿里云仓库支持https

    2022年开始,阿里云对以前的maven仓库地址进行升级,由原来的http换成https,所以maven配置和IntelliJ IDEA需要进行对应的一些调整 原来链接: http://maven.aliyun.com/repository/public 现在链接: https://maven.aliyun.com/repository/public maven settings.xml配置 maven settings.xml 配置,先加上 mirror 加上

    2024年02月06日
    浏览(48)
  • linux编译curl库(支持https)

    openssl下载和编译 https://www.openssl.org/source/old/ 解压 配置 如果是编译静态库加入 -fPIC no-shared 如果指定安装路径,使用 --prefix=/usr/local/openssl/ 选项指定特定目录 编译和安装 curl下载和编译 https://curl.se/download.html 解压 配置 如果想要编译静态库,加入 --disable-shared 选项 如果需要指

    2024年02月09日
    浏览(40)
  • LaravelS 项目配置ssl 支持https 访问

    ####laravalS 配置ssl 请求支持https nginx: [emerg] no “ssl_certificate” is defined for the “listen … ssl” directive in /www/server/panel/vhost/nginx/im.17epk.com.conf:14 配置 1、 listen 443 ssl http2; 2.、 #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_certificate /www/server/

    2024年02月15日
    浏览(41)
  • 使用docker部署nginx并支持https

    配置nginx支持https,其实也简单,搞个证书,然后修改下配置文件就好了。我以前一篇文章(使用docker部署多个nginx站点并配置负载均衡)为例,做个记录。 如前所述,我使用docker,部署了3个nginx。一个做负载均衡服务器,另外两个做应用。结构如下: 那么,支持https,也是在

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包