微服务实战系列之玩转Docker(十九)

导览

  • 前言
  • etcd证书简介
    • [1. 证书用途](#1. 证书用途)
    • [2. etcd证书类型](#2. etcd证书类型)
    • [3. CFSSL工具](#3. CFSSL工具)
      • [3.1 简介](#3.1 简介)
      • [3.2 组成部分](#3.2 组成部分)
      • [3.3 安装](#3.3 安装)
        • [3.3.1 选择版本](#3.3.1 选择版本)
        • [3.3.2 安装验证](#3.3.2 安装验证)
  • 结语
  • 系列回顾

前言

听闻一句话:"快乐有迹可循,热爱漫无边际"。的确,当你站在热爱的土地上,快乐的"小芽"自然会"悄然萌发"。------碎碎念

玩转Docker终于又要更新了,这个系列从一颗"小芽",到现在"枝繁叶茂",离不开博主的辛勤浇灌。话不多说,言归正传,本期依然延续上篇的主题------etcd。

那么请允许博主,先带着各位回忆一下,etcd的前3篇讲了些什么:
十六:对etcd进行基本介绍,掌握它的一些特性,并完成集群的安装;
十七:进一步对集群运行进行说明,并提供可视化的数据管理方案;
十八:着重介绍etcd的安全方案,通过访问控制实现数据授权;

接下来的文章(不止一篇),博主将对etcd另外一种安全策略展开介绍,即通过证书满足集群的安全要求。在此之前,相信我们已或多或少了解过基于https协议的安全方案。那么我们快速切入本文的主题吧。

etcd证书简介

1. 证书用途

关于证书本身,博主不再赘述,它的作用是解决传输安全问题。简单讲是通过一个TLS/SSL协议实现传输加密,保障数据不被窃听。

2. etcd证书类型

etcd支持通过TLS证书完成客户端与集群通信以及集群成员间通信的身份验证。etcd集群涉及以下三类证书:

证书类型 证书用途
客户端证书 用于通过服务端验证客户端身份。
服务端证书 用于通过客户端验证服务端身份。
集群成员证书 用于集群成员间完成加密通信。

如果你想立即开启一个拥有证书的etcd集群,那么接下来请紧跟博主的步伐。

提示:etcd默认不启用安全认证,需要自己开启。如开启,必须准备一个CA证书和集群成员间的密钥对。此时你需要通过一个工具完成证书的创建,即:cfssl

3. CFSSL工具

3.1 简介

CFSSL是CloudFlare的PKI/TLS武器。它既是一个命令行工具,也是一个用于签名、验证和绑定TLS证书的HTTP API服务器。其需要Go 1.16+的环境才能完成构建。

请注意,某些linux发行版删除了某些算法(特别是基于RHEL的发行版),因此官方存储库中的golang将无法工作。这些发行版的用户应该手动安装CFSSL。

3.2 组成部分

CFSSL由以下部分组成:
- TLS PKI工具

构建自定义TLS PKI工具的包。
- cfssl程序

它是使用cfssl包的规范命令行实用程序。
- multirootca程序

它是一个可以使用多个签名密钥的证书颁发机构服务器。
- mkbundles程序

用于构建证书池捆绑包。
- cfssljson程序

它从cfssl和multirootca程序获取JSON输出,并将证书、密钥、CSR和捆绑包写入磁盘。

3.3 安装

在完成后续操作前,需要准备cfssl环境,因此咱们先开始安装吧。本文通过可执行文件进行安装,当然你可以选择源码编译方式。源码方式可参考:

3.3.1 选择版本

当前最新版是1.6.5,博主以它为例展开以下实践,请准备以下可执行包:

包名 下载地址
cfssl_1.6.5_linux_amd64 点它
cfssljson_1.6.5_linux_amd64 点它
cfssl-certinfo_1.6.5_linux_amd64 点它
3.3.2 安装验证

在linux环境下,按步骤完成以下安装操作:
Step1: wget包

powershell 复制代码
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssl_1.6.5_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssljson_1.6.5_linux_amd64
wget https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssl-certinfo_1.6.5_linux_amd64

执行完成后,可以看到3个包:

Step2: 赋予执行权限

把3个文件搬到/usr/local/cfssl/bin目录下,赋予执行权限:

powershell 复制代码
cp /usr/local/src/cfssl/cfssl* /usr/local/bin/cfssl
cd /usr/local/bin/cfssl
chmod +x cfssl*

效果如下:

Step3: 验证

此时你可通过以下命令确认安装是否成功:

powershell 复制代码
cfssl_1.6.5_linux_amd64 version

效果如下:

结语

通过该文,我们学习了一个证书制作工具的用途和安装过程。后序将基于此完成更多的相关实践,欢迎关注O~

走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~

系列回顾


微服务实战系列之玩转Docker(十八)
微服务实战系列之玩转Docker(十七)
微服务实战系列之玩转Docker(十六)
微服务实战系列之玩转Docker(十五)
微服务实战系列之玩转Docker(十四)
微服务实战系列之玩转Docker(十三)
微服务实战系列之玩转Docker(十二)
微服务实战系列之玩转Docker(十一)
微服务实战系列之玩转Docker(十)
微服务实战系列之玩转Docker(九)
微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

相关推荐
跟着珅聪学java2 小时前
Eureka 客户端状态为 DOWN 的解决方案
云原生·eureka
明灯L4 小时前
《Kubernetes 集群搭建全指南:从核心概念到环境部署!》
云原生·容器·kubernetes
insight^tkk4 小时前
【Docker】记录一次使用docker部署dify网段冲突的问题
运维·人工智能·docker·ai·容器
江湖人称小鱼哥4 小时前
WSL + Docker 网络访问详解
网络·docker·容器·wsl
韩宏伟4 小时前
使用 Loki + Promtail + Grafana 实现 Docker 容器日志采集与可视化
docker·容器·grafana
JanelSirry6 小时前
微服务是不是一定要容器化(如 Docker)?我该怎么选
docker·微服务·架构
没有bug.的程序员6 小时前
电商系统分布式架构实战:从单体到微服务的演进之路
java·分布式·微服务·云原生·架构·监控体系·指标采集
重生之我要当java大帝6 小时前
java微服务-尚医通-数据字典-5
vue.js·微服务·云原生·架构
小屁不止是运维6 小时前
k8s问题详解1:k8s集群上传文件过大导致413 Request Entity Too Large(请求文件实体过大)
docker·容器·kubernetes