小知识:Docker开启TLS和CA认证的方法步骤

前言:docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启docker的tlsca认证方法,并使用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猿站网-插图

文件说明

?
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认证的方法步骤-2猿站网-插图

二、开启远程

开启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认证的方法步骤-3猿站网-插图

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

?
1
docker -h 192.168.8.248:2375 images

%小知识:Docker开启TLS和CA认证的方法步骤-4猿站网-插图

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

?
1
docker -h 6c377ffb8e86:2375 images

%小知识:Docker开启TLS和CA认证的方法步骤-5猿站网-插图

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

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

%小知识:Docker开启TLS和CA认证的方法步骤-6猿站网-插图

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

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

%小知识:Docker开启TLS和CA认证的方法步骤-7猿站网-插图

三、远程连接

3.1 jenkins连接

添加凭证

%小知识:Docker开启TLS和CA认证的方法步骤-8猿站网-插图

填写信息

%小知识:Docker开启TLS和CA认证的方法步骤-9猿站网-插图

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

%小知识:Docker开启TLS和CA认证的方法步骤-10猿站网-插图

如果是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认证的方法步骤-11猿站网-插图

连接正常

%小知识:Docker开启TLS和CA认证的方法步骤-12猿站网-插图

如果是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认证内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

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

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:docker打包Python环境的过程详解

2023-3-18 18:45:15

建站知识

小知识:Docker+DockerCompose封装web应用的方法步骤

2023-3-18 19:00:09

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索