使用TLS加密通讯远程连接Docker的示例详解
默认情况下,Docker通过非联网UNIX套接字运行。它还可以使用HTTP套接字进行可选通信。
如果需要以安全的方式通过网络访问Docker,可以通过指定标志将Docker标志指向受信任的CA证书来启用TLS。
在守护程序模式下,它只允许来自由该CA签名的证书验证的客户端的连接。在客户端模式下,它仅连接到具有该CA签名的证书的服务器。
#创建CA证书目录 [root@localhost~]#mkdirtls [root@localhost~]#cdtls/ #创建CA密钥 [root@localhosttls]#opensslgenrsa-aes256-outca-key.pem4096 GeneratingRSAprivatekey,4096bitlongmodulus ..............................................................................++ .....................................................................................................................................................................++ eis65537(0x10001) Enterpassphraseforca-key.pem: Verifying-Enterpassphraseforca-key.pem: #创建CA证书 [root@localhosttls]#opensslreq-new-x509-days1000-keyca-key.pem-sha256-subj"/CN=*"-outca.pem Enterpassphraseforca-key.pem: [root@localhosttls]#ll 总用量8 -rw-r--r--.1rootroot332612月317:20ca-key.pem -rw-r--r--.1rootroot176512月319:03ca.pem #创建服务器私钥 [root@localhosttls]#opensslgenrsa-outserver-key.pem4096 GeneratingRSAprivatekey,4096bitlongmodulus ................................................................++ ..................++ eis65537(0x10001) [root@localhosttls]#ll 总用量12 -rw-r--r--.1rootroot332612月317:20ca-key.pem -rw-r--r--.1rootroot176512月319:03ca.pem -rw-r--r--.1rootroot324312月319:03server-key.pem #对私钥进行签名 [root@localhosttls]#opensslreq-subj"/CN=*"-sha256-new-keyserver-key.pem-outserver.csr [root@localhosttls]#ll 总用量16 -rw-r--r--.1rootroot332612月317:20ca-key.pem -rw-r--r--.1rootroot176512月319:03ca.pem -rw-r--r--.1rootroot157412月319:04server.csr -rw-r--r--.1rootroot324312月319:03server-key.pem 使用CA证书与私钥签名,输入上面设置的密码 [root@localhosttls]#opensslx509-req-days1000-sha256-inserver.csr-CAca.pem-CAkeyca-key.pem-CAcreateserial-outserver-cert.pem Signatureok subject=/CN=* GettingCAPrivateKey Enterpassphraseforca-key.pem: #生成客户端密钥 [root@localhosttls]#opensslgenrsa-outkey.pem4096 GeneratingRSAprivatekey,4096bitlongmodulus ....................................................................................................................++ .................................++ eis65537(0x10001) #对客户端签名 [root@localhosttls]#opensslreq-subj"/CN=client"-new-keykey.pem-outclient.csr #创建配置文件 [root@localhosttls]#echoextendedKeyUsage=clientAuth>extfile.cnf #签名证书 [root@localhosttls]#opensslx509-req-days1000-sha256-inclient.csr-CAca.pem-CAkeyca-key.pem-CAcreateserial-outcert.pem-extfileextfile.cnf Signatureok subject=/CN=client GettingCAPrivateKey Enterpassphraseforca-key.pem: [root@localhosttls]#ll 总用量40 -rw-r--r--.1rootroot332612月317:20ca-key.pem -rw-r--r--.1rootroot176512月319:03ca.pem -rw-r--r--.1rootroot1712月319:35ca.srl -rw-r--r--.1rootroot169612月319:35cert.pem -rw-r--r--.1rootroot158212月319:29client.csr -rw-r--r--.1rootroot2812月319:32extfile.cnf -rw-r--r--.1rootroot324312月319:08key.pem -rw-r--r--.1rootroot164712月319:08server-cert.pem -rw-r--r--.1rootroot157412月319:04server.csr -rw-r--r--.1rootroot324312月319:03server-key.pem #删除多余文件 [root@localhosttls]#
在客户端测试
[root@client~]#docker--tlsverify--tlscacert=ca.pem--tlscert=cert.pem--tlskey=key.pem-Htcp://master:2376version Client:DockerEngine-Community Version:19.03.13 APIversion:1.40 Goversion:go1.13.15 Gitcommit:4484c46d9d Built:WedSep1617:03:452020 OS/Arch:linux/amd64 Experimental:false Server:DockerEngine-Community Engine: Version:19.03.13 APIversion:1.40(minimumversion1.12) Goversion:go1.13.15 Gitcommit:4484c46d9d Built:WedSep1617:02:212020 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内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!