使用TLS加密通讯远程连接Docker的示例详解

2025-05-27 0 59

默认情况下,Docker 通过非联网 UNIX 套接字运行。它还可以使用 HTTP 套接字进行可选通信。
如果需要以安全的方式通过网络访问 Docker,可以通过指定标志将 Docker 标志指向受信任的 CA 证书来启用 TLS
在守护程序模式下,它只允许来自由该 CA 签名的证书验证的客户端的连接。在客户端模式下,它仅连接到具有该 CA 签名的证书的服务器。

?

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

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73
# 创建CA证书目录

[root@localhost ~]# mkdir tls

[root@localhost ~]# cd tls/

# 创建CA密钥

[root@localhost tls]# openssl genrsa -aes256 -out ca-key.pem 4096

Generating RSA private key, 4096 bit long modulus

..............................................................................++

.....................................................................................................................................................................++

e is 65537 (0x10001)

Enter pass phrase for ca-key.pem:

Verifying - Enter pass phrase for ca-key.pem:

# 创建CA证书

[root@localhost tls]# openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem

Enter pass phrase for ca-key.pem:

[root@localhost tls]# ll

总用量 8

-rw-r--r--. 1 root root 3326 12月 3 17:20 ca-key.pem

-rw-r--r--. 1 root root 1765 12月 3 19:03 ca.pem

# 创建服务器私钥

[root@localhost tls]# openssl genrsa -out server-key.pem 4096

Generating RSA private key, 4096 bit long modulus

................................................................++

..................++

e is 65537 (0x10001)

[root@localhost tls]# ll

总用量 12

-rw-r--r--. 1 root root 3326 12月 3 17:20 ca-key.pem

-rw-r--r--. 1 root root 1765 12月 3 19:03 ca.pem

-rw-r--r--. 1 root root 3243 12月 3 19:03 server-key.pem

# 对私钥进行签名

[root@localhost tls]# openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr

[root@localhost tls]# ll

总用量 16

-rw-r--r--. 1 root root 3326 12月 3 17:20 ca-key.pem

-rw-r--r--. 1 root root 1765 12月 3 19:03 ca.pem

-rw-r--r--. 1 root root 1574 12月 3 19:04 server.csr

-rw-r--r--. 1 root root 3243 12月 3 19:03 server-key.pem

使用CA证书与私钥签名,输入上面设置的密码

[root@localhost tls]# openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

Signature ok

subject=/CN=*

Getting CA Private Key

Enter pass phrase for ca-key.pem:

#生成客户端密钥

[root@localhost tls]# openssl genrsa -out key.pem 4096

Generating RSA private key, 4096 bit long modulus

....................................................................................................................++

.................................++

e is 65537 (0x10001)

#对客户端签名

[root@localhost tls]# openssl req -subj "/CN=client" -new -key key.pem -out client.csr

#创建配置文件

[root@localhost tls]# echo extendedKeyUsage=clientAuth > extfile.cnf

#签名证书

[root@localhost tls]# openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf

Signature ok

subject=/CN=client

Getting CA Private Key

Enter pass phrase for ca-key.pem:

[root@localhost tls]# ll

总用量 40

-rw-r--r--. 1 root root 3326 12月 3 17:20 ca-key.pem

-rw-r--r--. 1 root root 1765 12月 3 19:03 ca.pem

-rw-r--r--. 1 root root 17 12月 3 19:35 ca.srl

-rw-r--r--. 1 root root 1696 12月 3 19:35 cert.pem

-rw-r--r--. 1 root root 1582 12月 3 19:29 client.csr

-rw-r--r--. 1 root root 28 12月 3 19:32 extfile.cnf

-rw-r--r--. 1 root root 3243 12月 3 19:08 key.pem

-rw-r--r--. 1 root root 1647 12月 3 19:08 server-cert.pem

-rw-r--r--. 1 root root 1574 12月 3 19:04 server.csr

-rw-r--r--. 1 root root 3243 12月 3 19:03 server-key.pem

# 删除多余文件

[root@localhost tls]#

在客户端测试

?

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
[root@client ~]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://master:2376 version

Client: Docker Engine - Community

Version: 19.03.13

API version: 1.40

Go version: go1.13.15

Git commit: 4484c46d9d

Built: Wed Sep 16 17:03:45 2020

OS/Arch: linux/amd64

Experimental: false

Server: Docker Engine - Community

Engine:

Version: 19.03.13

API version: 1.40 (minimum version 1.12)

Go version: go1.13.15

Git commit: 4484c46d9d

Built: Wed Sep 16 17:02:21 2020

OS/Arch: linux/amd64

Experimental: false

containerd:

Version: 1.3.9

GitCommit: ea765aba0d05254012b0b9e595e995c09186427f

runc:

Version: 1.0.0-rc10

GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd

docker-init:

Version: 0.18.0

GitCommit: fec3683

到此这篇关于使用TLS加密通讯远程连接Docker的示例详解的文章就介绍到这了,更多相关TLS加密远程连接Docker内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://blog.csdn.net/Ghostpant/article/details/110562858

收藏 (0) 打赏

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

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

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

快网idc优惠网 行业资讯 使用TLS加密通讯远程连接Docker的示例详解 https://www.kuaiidc.com/64389.html

相关文章

发表评论
暂无评论