java通过证书访问etcd的实现步骤

 更新时间:2024年05月08日 09:52:10   作者:amadeus_liu2  
Etcd提供了多种语言的客户端库,本文主要介绍了java通过证书访问etcd的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、首先,要使用cfssl生成etcd证书相关的文件(ca.pem server.pem server-key.pem ),然后把server-key.pem进行转换:

openssl pkcs8 -topk8 -nocrypt -in server-key.pem -out server.key

二、带证书启动etcd

./etcd --name infra0   --cert-file=/root/server.pem --key-file=/root/server-key.pem   --advertise-client-urls=https://0.0.0.0:2379 --listen-client-urls=https://0.0.0.0:2379

可通过etcdctl 进行连接验证

./etcdctl --cacert=/root/ca.pem --cert=/root/server.pem --key=/root/server-key.pem --endpoints="https://10.180.23.10:2379" get Elon

三、在java项目中添加相关依赖,完整依赖类似如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>springbootetcd3</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencies>


        <dependency>
            <groupId>io.etcd</groupId>
            <artifactId>jetcd-core</artifactId>
            <version>0.7.7</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.coreos/jetcd-core -->
<!--        <dependency>
            <groupId>com.coreos</groupId>
            <artifactId>jetcd-core</artifactId>
            <version>0.0.2</version>
        </dependency>-->



        <!--                <dependency>
                            <groupId>io.etcd</groupId>
                            <artifactId>jetcd-core</artifactId>
                            <version>0.5.0</version>
                        </dependency>-->

<!--        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty-shaded</artifactId>
            <version>1.50.0</version>
        </dependency>-->

        <!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.90.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.netty/netty-tcnative -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-tcnative</artifactId>
            <version>2.0.65.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.netty/netty-tcnative-boringssl-static -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-tcnative-boringssl-static</artifactId>
            <version>2.0.65.Final</version>
        </dependency>




        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>



    </dependencies>

</project>

四、创建客户端,访问etcd

package cn.edu.tju;


import io.etcd.jetcd.ByteSequence;
import io.etcd.jetcd.Client;
import io.etcd.jetcd.KV;
import io.etcd.jetcd.api.PutResponse;
import io.grpc.netty.GrpcSslContexts;
import io.netty.handler.ssl.SslContext;


import java.io.File;
import java.io.IOException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class EtcdExample {
    public static void main(String[] args) throws IOException, ExecutionException, InterruptedException {

        File cert = new File("d:\\ca.pem");
        File keyCertChainFile = new File("d:\\server.pem");
        File keyFile = new File("d:\\server.key");
        SslContext context = GrpcSslContexts.forClient()
                .trustManager(cert)
                .keyManager(keyCertChainFile, keyFile)
                .build();
        Client client = Client.builder()
                .endpoints("https://xx.xx.xx.xx:2379")
                .sslContext(context)
                .build();

        ByteSequence key = ByteSequence.from("Elon".getBytes());
        ByteSequence value = ByteSequence.from("Musk".getBytes());
        // put the key-value
        client.getKVClient().put(key,value).get();
        System.out.println("ok");

    }
}

到此这篇关于java通过证书访问etcd的实现步骤的文章就介绍到这了,更多相关java 证书访问etcd内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • jedis获取redis中二进制图片转Base64方式

    jedis获取redis中二进制图片转Base64方式

    这篇文章主要介绍了jedis获取redis中二进制图片转Base64方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • springBoot整合shiro如何解决读取不到@value值问题

    springBoot整合shiro如何解决读取不到@value值问题

    这篇文章主要介绍了springBoot整合shiro如何解决读取不到@value值问题,具有很好的参考价值,希望对大家有所帮助,
    2023-08-08
  • 简单了解Spring Framework5.0新特性

    简单了解Spring Framework5.0新特性

    这篇文章主要介绍了简单了解Spring Framework5.0新特性,涉及了核心框架修订,核心容器更新,使用Kotlin进行函数式编程等几个方面的介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 解析spring加载bean流程的方法

    解析spring加载bean流程的方法

    这篇文章主要介绍了解析spring加载bean流程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Java如何根据实体指定字段值对其List进行排序详解

    Java如何根据实体指定字段值对其List进行排序详解

    在Java项目中可能会遇到给出一些条件,将List元素按照给定条件进行排序的情况,这篇文章主要给大家介绍了关于Java如何根据实体指定字段值对其List进行排序的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Swing常用组件之文本框和文本区

    Swing常用组件之文本框和文本区

    这篇文章主要为大家详细介绍了Swing常用组件之文本框(JTestField)和文本区(JTextArea),Swing是一个用于开发Java应用程序用户界面的开发工具包,本文开始带大家学习Swing
    2016-05-05
  • SpringBoot整合Thymeleaf的方法

    SpringBoot整合Thymeleaf的方法

    这篇文章主要介绍了SpringBoot整合Thymeleaf的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写

    JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写

    这篇文章主要介绍了JAVA 16位ID生成工具类含16位不重复的随机数数字+大小写,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Spring Cloud Stream消息驱动组件使用方法介绍

    Spring Cloud Stream消息驱动组件使用方法介绍

    Spring Cloud Stream 消息驱动组件帮助我们更快速,更方便,更友好的去构建消息驱动微服务的。当时定时任务和消息驱动的⼀个对比。消息驱动:基于消息机制做一些事情
    2022-09-09
  • java String.join()方法实例详解

    java String.join()方法实例详解

    String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了字符串拼接的操作,本文给大家介绍java String.join()方法,感兴趣的朋友一起看看吧
    2025-06-06

最新评论