docker daemon的HTTP socket TLS加密连接怎么实现
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容主要讲解"docker daemon的HTTP socket TLS加密连接怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"docker d
千家信息网最后更新 2025年02月03日docker daemon的HTTP socket TLS加密连接怎么实现
本篇内容主要讲解"docker daemon的HTTP socket TLS加密连接怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"docker daemon的HTTP socket TLS加密连接怎么实现"吧!
默认docker daemon是通过非网络的unix socket监听客户端连接的.如果我们需要客户端通过网络来安全的连接到docker daemon,则因该配置TLS加密方式,通过http的方式来连接.
使用openssl来创建ca证书,并签发密钥.
[root@srv00 ~]# openssl genrsa -aes256 -out ca-key.pem 4096Generating 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.pemEnter pass phrase for ca-key.pem:You are about to be asked to enter information that will be incorporatedinto 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 blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:ShanghaiLocality Name (eg, city) [Default City]:ShanghaiOrganization Name (eg, company) [Default Company Ltd]:dockerOrganizational Unit Name (eg, section) []:ITCommon Name (eg, your name or your server's hostname) []:srv00Email Address []:h@xxx.com
ca证书颁发好.可以申请证书签名请求(CSR)了,注意common name填主机名
服务端证书:
[root@srv00 ~]# openssl genrsa -out server-key.pem 4096Generating 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.cnfSignature oksubject=/CN=srv00Getting CA Private KeyEnter pass phrase for ca-key.pem:
客户端证书:
[root@srv00 ~]# openssl genrsa -out key.pem 4096Generating 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.cnfSignature oksubject=/CN=clientGetting CA Private KeyEnter 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 versionClient: 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/amd64Server: 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/hippohippo@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 .dockerhippo@ubuntu:~$ mv ca.pem cert.pem key.pem .docker/hippo@ubuntu:~$ export DOCKER_HOST=tcp://192.168.1.80:2376hippo@ubuntu:~$ export DOCKER_TLS_VERIFY=1hippo@ubuntu:~$ docker versionClient: 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/amd64An 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 --staterunning[root@srv00 ~]# firewall-cmd --add-port=2376/tcp --permanent[root@srv00 ~]# firewall-cmd --reload[root@srv00 ~]# firewall-cmd --list-port
再在ubuntu上试一下
hippo@ubuntu:~$ docker versionClient: 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/amd64Server: 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/amd64hippo@ubuntu:~$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 8596123a638e 9 days ago 196.7 MBubuntu latest c5f1cf30c96b 3 weeks ago 120.7 MB
测试成功.
如果将客户端证书放在用户的.docker目录下,则
--tlscacert --tlscert --tlskey
这些参数无需指定.如果是daemon的本机,-H
参数也无需指定.
到此,相信大家对"docker daemon的HTTP socket TLS加密连接怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
证书
客户
客户端
加密
参数
配置
内容
方式
机器
网络
学习
服务
测试
实用
更深
安全
成功
主机
兴趣
变量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳智能巡检软件开发报价
ttpt服务器啥意思
南郑城固网络安全法
服务器备份软件排名
oracle查询数据库名
服务器怎么安装整合包
易保网络技术电话
计算机网络技术顶岗实习手册
汽车上为什么要采用网络技术
深圳比较实在的软件开发培训
计算机网络技术工资待遇猎聘网
软件开发方面的英语单词
ftp服务器账户
数据库第五版课后习题答案第六章
大学生网络安全知识竞赛2021
数据库数据过大删除不了
戴尔1900服务器
app应用软件开发多少钱
服务器管理器不见了
在软件开发中下面任务
怎么给指定用户访问数据库
数据库管理员英文名
分析网络安全问题有哪些
sql数据库软件开发
幼儿园网络安全为主题班会
杭州克勤网络技术有限公司
工程技术数据库
昌平区网络软件开发要求
网络安全攻击途径
软件开发需求大