欢迎光临
我们一直在努力

Docker 部署teleport

Docker 部署teleport

自建 CA 整体逻辑

完整流程:

1. 生成 Root CA 私钥
2. 生成 Root CA 证书(自签)
3. 服务端生成自己的私钥
4. 服务端生成 CSR(证书签名请求)
5. Root CA 给 CSR 签名
6. 得到服务端证书
7. 客户端信任 Root CA
8. TLS 验证通过


核心逻辑图

              ┌────────────────┐
              │ Root CA 私钥   │
              │   ca.key       │
              └──────┬─────────┘
                      │
                      │ 自签
                      ▼
              ┌────────────────┐
              │ Root CA 证书   │
              │   ca.crt       │
              └──────┬─────────┘
                      │
          给业务证书做数字签名
                      │
        ┌────────────┴────────────┐
        ▼                         ▼
┌────────────────┐       ┌────────────────┐
│ server.key     │       │ client.key     │
│ 服务端私钥     │       │ 客户端私钥     │
└──────┬─────────┘       └──────┬─────────┘
      │ CSR                   │ CSR
      ▼                       ▼
┌────────────────┐       ┌────────────────┐
│ server.csr     │       │ client.csr     │
└──────┬─────────┘       └──────┬─────────┘
      │ CA签名                 │ CA签名
      ▼                       ▼
┌────────────────┐       ┌────────────────┐
│ server.crt     │       │ client.crt     │
└────────────────┘       └────────────────┘





              你自己的 OpenSSL CA
                      ↓
        给 Teleport Proxy/Auth 签 HTTPS 证书
                      ↓
      ┌─────────────────────────┐
      │ teleport-auth/proxy     │
      │ myteleport.com         │
      │ 192.168.219.60         │
      └─────────────────────────┘
                      ↓
              Teleport 内置 CA
                      ↓
          自动签发 node TLS/SSH 证书
                      ↓
      ┌─────────────────────────┐
      │ node-1                 │
      │ node-2                 │
      └─────────────────────────┘

用 自签 TLS 证书 来让 Teleport 集群(Auth + Node)安全通信,而不是依赖默认的 Teleport 内置证书。下面我帮你整理一套完整方案,包括 CA 生成、证书签发、Teleport 配置。


1️⃣ 生成自签 CA

在 Teleport Auth 服务器上执行:

# 创建目录存放 CA
mkdir -p /etc/teleport/certs
cd /etc/teleport/certs

# 生成 CA 私钥
openssl genrsa -out ca.key 4096

# 生成 CA 证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=Teleport/OU=CA/CN=Teleport-CA"


2️⃣ 生成 Teleport Auth 证书

# 生成 Auth 服务器私钥
openssl genrsa -out auth.key 4096

# 生成 CSR(证书签名请求)
openssl req -new -key auth.key -out auth.csr \\
-subj "/C=CN/ST=Beijing/L=Beijing/O=Teleport/OU=Auth/CN=192.168.219.60"

# 用自签 CA 签发 Auth 证书
openssl x509 -req -in auth.csr -CA ca.crt -CAkey ca.key -CAcreateserial \\
-out auth.crt -days 365 -sha256

  • CN 要填写 Auth/Proxy 服务器 IP 或域名

  • auth.crt + auth.key 就是 Auth/Proxy TLS 使用的证书

单机 Docker 部署(推荐测试/学习)

1. 创建目录

mkdir -p /data/teleport/{config,data}


2. 生成配置文件

创建:

vim /data/teleport/config/teleport.yaml

内容:

version: v3
teleport:
nodename: rancher
data_dir: /var/lib/teleport
join_params:
  token_name: ""
  method: token
log:
  output: stderr
  severity: INFO
  format:
    output: text
ca_pin: ""
diag_addr: ""
auth_service:
enabled: "yes"
listen_addr: 0.0.0.0:3025
cluster_name: teleport.local
proxy_listener_mode: multiplex
ssh_service:
enabled: "no"
proxy_service:
enabled: "yes"
web_listen_addr: 0.0.0.0:3080
public_addr: 192.168.219.60:3080
https_keypairs: []
https_keypairs_reload_interval: 0s
acme: {}

1. 拉取镜像

docker pull public.ecr.aws/gravitational/teleport-distroless:18.7.2


2. 导出镜像

docker save -o teleport-18.7.2.tar \\
public.ecr.aws/gravitational/teleport-distroless:18.7.2
启动teleport
docker run -d –name teleport –hostname teleport –restart unless-stopped -p 3023:3023 -p 3024:3024 -p 3025:3025 -p 3080:3080 -v /data/teleport/config:/etc/teleport -v /data/teleport/data:/var/lib/teleport public.ecr.aws/gravitational/teleport-distroless:18.7.4


增加权限和用户
docker exec -it teleport tctl users add admin   –roles=editor,access   –logins=root,teleport

新增节点获取token 及ca
docker exec -it teleport tctl tokens add –type=node


[root@rancher ~]# docker exec -it teleport tctl tokens add –type=node
The invite token: ee46075285a7395cb3dff6eb2e97cb13
This token will expire in 30 minutes.

Run this on the new node to join the cluster:

> teleport start \\
  –roles=node \\
  –token=ee46075285a7395cb3dff6eb2e97cb13 \\
  –ca-pin=sha256:1229810496693fcf634d6704d2a416933429cf3667f9516c8fc51a0bc42e4d2e \\
  –auth-server=192.168.219.60:3080

安装agent节点

  • 下载 Teleport 二进制:

  • wget https://cdn.teleport.dev/teleport-v18.7.4-linux-amd64-bin.tar.gz
    tar -zxvf teleport-v18.7.4-linux-amd64-bin.tar.gz
    cp teleport/teleport /usr/local/bin/

    2.编辑配置文件

    vim /etc/teleport.yaml


    version: v3

    teleport:
    nodename: k8s
    data_dir: /var/lib/teleport

    auth_token: "c42198214357a139bac8bab5f6a70427"

    auth_server: "192.168.219.60:3025"

    ca_pin:
      – "sha256:1229810496693fcf634d6704d2a416933429cf3667f9516c8fc51a0bc42e4d2e"

    auth_service:
    enabled: false

    proxy_service:
    enabled: false

    ssh_service:
    enabled: true
     
     
    启动teleport agent
    teleport start –config=/etc/teleport.yaml

    赞(0)
    未经允许不得转载:171主机测评 » Docker 部署teleport
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址