久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

docker daemon的HTTP socket TLS加密連接怎么實現

203次閱讀
沒有評論

共計 5577 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇內容主要講解“docker daemon 的 HTTP socket TLS 加密連接怎么實現”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“docker daemon 的 HTTP socket TLS 加密連接怎么實現”吧!

默認 docker daemon 是通過非網絡的 unix socket 監聽客戶端連接的. 如果我們需要客戶端通過網絡來安全的連接到 docker daemon, 則因該配置 TLS 加密方式, 通過 http 的方式來連接.

使用 openssl 來創建 ca 證書, 并簽發密鑰.

[root@srv00 ~]# 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:
[root@srv00 ~]# openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
Enter pass phrase for ca-key.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter  . , the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:docker
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server s hostname) []:srv00
Email Address []:h@xxx.com

ca 證書頒發好. 可以申請證書簽名請求 (CSR) 了, 注意 common name 填主機名

服務端證書:

[root@srv00 ~]# openssl genrsa -out server-key.pem 4096
Generating RSA private key, 4096 bit long modulus
.........................................++
..................................................................++
e is 65537 (0x10001)
[root@srv00 ~]# openssl req -subj  /CN=srv00  -sha256 -new -key server-key.pem -out server.csr
[root@srv00 ~]# echo subjectAltName = IP:192.168.1.80,IP:127.0.0.1   extfile.cnf 
[root@srv00 ~]# openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
Signature ok
subject=/CN=srv00
Getting CA Private Key
Enter pass phrase for ca-key.pem:

客戶端證書:

[root@srv00 ~]# openssl genrsa -out key.pem 4096
Generating RSA private key, 4096 bit long modulus
............................................................++
..............................................................................................................................................................++
e is 65537 (0x10001)
[root@srv00 ~]# openssl req -subj  /CN=client  -new -key key.pem -out client.csr
[root@srv00 ~]# echo extendedKeyUsage = clientAuth   extfile.cnf
[root@srv00 ~]# openssl x509 -req -days 365 -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:

CSR 沒用可以刪了

[root@srv00 ~]# rm -rfv client.csr server.csr 
removed ‘client.csr’removed ‘server.csr’

安裝證書

[root@srv00 ~]# chmod 400 *.pem  == 收緊權限
[root@srv00 ~]# mkdir /etc/docker/cert.d
[root@srv00 ~]# cp ca.pem server-key.pem server-cert.pem /etc/docker/cert.d/
[root@srv00 ~]# vi /etc/systemd/system/docker.service.d/daemon.conf 
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// \
--storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/vgdocker-thinpool --storage-opt dm.use_deferred_removal=true \
--tlsverify --tlscacert=/etc/docker/cert.d/ca.pem --tlscert=/etc/docker/cert.d/server-cert.pem --tlskey=/etc/docker/cert.d/server-key.pem \
-H=0.0.0.0:2376
[root@srv00 ~]# systemctl daemon-reload
[root@srv00 ~]# systemctl restart docker

客戶端的連接

[root@srv00 ~]# docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H=192.168.1.80:2376 version
Client:
 Version: 1.11.1
 API version: 1.23
 Go version: go1.5.4
 Git commit: 5604cbe
 Built: Wed Apr 27 00:34:42 2016
 OS/Arch: linux/amd64
Server:
 Version: 1.11.1
 API version: 1.23
 Go version: go1.5.4
 Git commit: 5604cbe
 Built: Wed Apr 27 00:34:42 2016
 OS/Arch: linux/amd64

客戶端證書移到另一臺機器上測試

[root@srv00 ~]# scp ca.pem key.pem cert.pem hippo@192.168.1.81:/home/hippo
hippo@192.168.1.81 s password: 
ca.pem 100% 2069 2.0KB/s 00:00 
key.pem 100% 3243 3.2KB/s 00:00 
cert.pem 100% 1846 1.8KB/s 00:00

ubuntu 機器上配置

hippo@ubuntu:~$ mkdir .docker
hippo@ubuntu:~$ mv ca.pem cert.pem key.pem .docker/
hippo@ubuntu:~$ export DOCKER_HOST=tcp://192.168.1.80:2376
hippo@ubuntu:~$ export DOCKER_TLS_VERIFY=1
hippo@ubuntu:~$ docker version
Client:
 Version: 1.10.3
 API version: 1.22
 Go version: go1.6.1
 Git commit: 20f81dd
 Built: Wed, 20 Apr 2016 14:19:16 -0700
 OS/Arch: linux/amd64
An error occurred trying to connect: Get https://192.168.1.80:2376/v1.22/version: dial tcp 192.168.1.80:2376: getsockopt: no route to host

通過配置環境變量而不是通過傳遞參數也可

可能服務端防火墻的問題.. 我們開放 2376 端口就好

[root@srv00 ~]# firewall-cmd --state
running
[root@srv00 ~]# firewall-cmd --add-port=2376/tcp --permanent
[root@srv00 ~]# firewall-cmd --reload
[root@srv00 ~]# firewall-cmd --list-port

再在 ubuntu 上試一下

hippo@ubuntu:~$ docker version
Client:
 Version: 1.10.3
 API version: 1.22
 Go version: go1.6.1
 Git commit: 20f81dd
 Built: Wed, 20 Apr 2016 14:19:16 -0700
 OS/Arch: linux/amd64
Server:
 Version: 1.11.1
 API version: 1.23
 Go version: go1.5.4
 Git commit: 5604cbe
 Built: Wed Apr 27 00:34:42 2016
 OS/Arch: linux/amd64
hippo@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 8596123a638e 9 days ago 196.7 MB
ubuntu latest c5f1cf30c96b 3 weeks ago 120.7 MB

測試成功.

如果將客戶端證書放在用戶的.docker 目錄下, 則 –tlscacert –tlscert –tlskey 這些參數無需指定. 如果是 daemon 的本機,- H 參數也無需指定.

到此,相信大家對“docker daemon 的 HTTP socket TLS 加密連接怎么實現”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計5577字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 广州市| 大洼县| 阳东县| 京山县| 临夏市| 策勒县| 玉田县| 张家川| 大宁县| 土默特右旗| 斗六市| 岳阳市| 监利县| 安吉县| 东乡族自治县| 探索| 旺苍县| 望都县| 清水河县| 无锡市| 秭归县| 定边县| 永丰县| 巴南区| 建湖县| 甘孜县| 庄浪县| 抚顺市| 福建省| 恩平市| 垫江县| 思茅市| 古浪县| 玛沁县| 旺苍县| 乌兰浩特市| 淅川县| 林西县| 天津市| 工布江达县| 贞丰县|