Docker开启TLS和CA认证的方法步骤

2025-05-27 0 73

前言:docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启docker的tls和ca认证方法,并使用jenkins和portainer连接。

一、生成证书

查看服务器主机名

?

1
hostname

Docker开启TLS和CA认证的方法步骤

auto-generate-docker-tls-ca.sh

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56
# !/bin/bash

# 一键生成tls和ca证书

# create : 2021-08-25

# update : 2021-08-25

# @autor : wuduoqiang

# 服务器主机名

server="6c377ffb8e86"

# 密码

password="2cx&bujsv4u%3tw9"

# 国家

country="cn"

# 省份

state="海南省"

# 城市

city="海口市"

# 机构名称

organization="小强崽公司"

# 机构单位

organizational_unit="小强崽单位"

# 邮箱

email="875667601@qq.com"

# 生成ca密钥

openssl genrsa -aes256 -passout pass:$password -out ca-key.pem 2048

# 生成ca证书

openssl req -new -x509 -passin "pass:$password" -days 3650 -key ca-key.pem -sha256 -out ca-cert.pem -subj "/c=$country/st=$state/l=$city/o=$organization/ou=$organizational_unit/cn=$server/emailaddress=$email"

# 生成服务端密钥

openssl genrsa -out server-key.pem 2048

# 生成服务端证书签名的请求文件

openssl req -subj "/cn=$server" -new -key server-key.pem -out server-req.csr

# 生成服务端证书

openssl x509 -req -days 3650 -in server-req.csr -ca ca-cert.pem -cakey ca-key.pem -passin "pass:$password" -cacreateserial -out server-cert.pem

# 生成客户端密钥

openssl genrsa -out client-key.pem 2048

# 生成客户端证书签名的请求文件

openssl req -subj '/cn=client' -new -key client-key.pem -out client-req.csr

# 生成客户端证书

sh -c 'echo "extendedkeyusage=clientauth" >> extfile.cnf'

openssl x509 -req -days 3650 -in client-req.csr -ca ca-cert.pem -cakey ca-key.pem -passin "pass:$password" -cacreateserial -out client-cert.pem -extfile extfile.cnf

# 更改密钥权限

chmod 0400 ca-key.pem server-key.pem client-key.pem

# 更改证书权限

chmod 0444 ca-cert.pem server-cert.pem client-cert.pem

# 删除无用文件

# rm ca-cert.srl client-req.csr server-req.csr extfile.cnf

Docker开启TLS和CA认证的方法步骤

文件说明

?

1

2

3

4

5

6

7

8

9

10
ca.srl:ca签发证书的序列号记录文件

ca-cert.pem:ca证书

ca-key.pem:ca密钥

server-key.pem:服务端密钥

server-req.csr:服务端证书签名请求文件

server-cert.pem:服务端证书

client-key.pem:客户端密钥

extfile.cnf:客户端证书扩展配置文件

client-req.csr:客户端证书签名请求文件

client-cert.pem:客户端证书

命令解析

?

1

2

3

4

5

6

7

8

9
# -subj /c=$country/st=$state/l=$city/o=$organization/ou=$organizational_unit/cn=$server/emailaddress=$email

-subj 是 指定证书申请人的信息

c 是 country name

st 是 state or province name

l 是 locality name

o 是 organization name

ou 是 organizational unit name

cn 是 common name

emailaddress 是 email address

Docker开启TLS和CA认证的方法步骤

二、开启远程

开启docker的远程访问api

?

1

2

3

4

5

6

7

8

9

10

11

12
# 编辑文件

vim /etc/systemd/system/docker.service

# 修改内容,注意证书的指定位置

execstart=/usr/bin/dockerd \\

--tlsverify \\

--tlscacert=/etc/docker/ca-cert.pem \\

--tlscert=/etc/docker/server-cert.pem \\

--tlskey=/etc/docker/server-key.pem \\

-h unix:///var/run/docker.sock \\

-h tcp://0.0.0.0:2375

# 重启服务

systemctl daemon-reload && systemctl restart docker

Docker开启TLS和CA认证的方法步骤

如果没有密钥和证书是连不上的

?

1
docker -h 192.168.8.248:2375 images

Docker开启TLS和CA认证的方法步骤

使用主机名没有密钥和证书也是连不上的

?

1
docker -h 6c377ffb8e86:2375 images

Docker开启TLS和CA认证的方法步骤

加上密钥和证书没有使用主机名也是连不上

?

1
curl https://192.168.8.248:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem

Docker开启TLS和CA认证的方法步骤

加上密钥和证书并且使用主机名就能访问

?

1
curl https://6c377ffb8e86:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem

Docker开启TLS和CA认证的方法步骤

三、远程连接

3.1 jenkins连接

添加凭证

Docker开启TLS和CA认证的方法步骤

填写信息

Docker开启TLS和CA认证的方法步骤

测试连接,注意这里要使用主机名

Docker开启TLS和CA认证的方法步骤

如果是docker安装的jenkins,则需要映射主机名

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
version: '3'

services:

jenkins:

restart: always

image: 192.168.8.247/xiaoqiangzai/jenkins:latest

container_name: jenkins

ports:

- '8888:8080'

- '50000:50000'

volumes:

- ./data/jenkins_home:/var/jenkins_home

- ./data/war/jenkins.war:/usr/share/jenkins/jenkins.war

environment:

jenkins_opts: "--prefix=/jenkins"

extra_hosts:

- "6c377ffb8e86:192.168.8.248"

3.2 portainer连接

选择客户端密钥和证书以及ca证书

Docker开启TLS和CA认证的方法步骤

连接正常

Docker开启TLS和CA认证的方法步骤

如果是docker安装的portainer,则需要映射主机名

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
version: '3'

services:

portainer:

restart: always

image: portainer/portainer-ce:latest

container_name: portainer

privileged: true

ports:

- '9000:9000'

volumes:

- ./data/data:/data

- ./data/public:/public

extra_hosts:

- "6c377ffb8e86:192.168.8.248"

到此这篇关于docker开启tls和ca认证的方法步骤的文章就介绍到这了,更多相关docker开启tls和ca认证内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://www.cnblogs.com/xiaoqiangzai/p/15192118.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 Docker开启TLS和CA认证的方法步骤 https://www.kuaiidc.com/63161.html

相关文章

发表评论
暂无评论