使用自签名证书配置TLS搭建安全的Docker本地私有库

编辑openssl.cnf文件

openssl.cnf 文件位置:/etc/pki/tls/openssl.cnf

编辑/etc/pki/tls/openssl.cnf文件,在 [v3_ca]下增加一行:

[ v3_ca ]  
subjectAltName = IP:192.168.169.125  # 此处IP设置为Docker本地私有库所在主机IP

然后使用openssl命令在当前的certs目录下创建了一个自签名的证书:

[root@mimo150 tls]# mkdir -p certs && openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt

在证书的创建过程中,会询问国家、省分、城市、组织、部门和common name的信息,其中common name信息我填写的是Docker私有库主机的IP 10.0.11.150. 证书创建完毕后,在certs目录下出现了两个文件:证书文件domain.crt和私钥文件domain.key。

[root@mimo150 tls]# mkdir -p certs && openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt

Generating a 4096 bit RSA private key
...........................................................++
..............++
writing new private key to 'certs/domain.key'
-----
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]:china
string is too long, it needs to be less than  2 bytes long
Country Name (2 letter code) [XX]:中国
string is too long, it needs to be less than  2 bytes long
Country Name (2 letter code) [XX]:CN    
State or Province Name (full name) []:TJ   
Locality Name (eg, city) [Default City]:TJ
Organization Name (eg, company) [Default Company Ltd]:TJXY
Organizational Unit Name (eg, section) []:AI    
Common Name (eg, your name or your server's hostname) []:10.0.11.150
Email Address []:
[root@mimo150 tls]# 

安装Docker

10.0.11.150主机上安装Docker,安装教程查看:Docker安装、操作常用命令

复制domain.crt到指定位置

将前面生成的domain.crt文件复制到/etc/docker/certs.d/10.0.11.150:5000目录下,然后重启docker进程:

[root@mimo150 tls]# mkdir -p /etc/docker/certs.d/10.0.11.150:5000
[root@mimo150 tls]# cp certs/domain.crt /etc/docker/certs.d/10.0.11.150:5000/ca.crt
[root@mimo150 tls]# systemctl restart docker

运行registry容器

在Docker私有库节点10.0.11.150上运行registry容器,并暴露容器的5000端口:

[root@mimo150 tls]# docker run -d -p 5000:5000 --restart=always \
 --name bigdata_docker_registry \
 --privileged=true \
 -v /etc/pki/tls/certs/certs:/certs \
 -v /data/docker/registry:/var/lib/registry \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
 docker.io/registry:latest
  • -p 5000:5000 : 指定外部端口5000映射容器内端口5000

  • –name registry : 容器名称

  • -v /etc/pki/tls/certs:/certs : 指定外部目录/etc/pki/tls/certs映射容器内部目录/certs

  • -v /data/docker/registry:/var/lib/registry : 同上一样,指定目录挂载映射

同步签名证书到Docker节点

最后,将domain.crt文件复制到Kubernetes集群里的所有节点的/etc/docker/certs.d/10.0.11.150:5000目录下,并重启各节点的docker进程,例如在10.0.11.151节点上运行:

# mkdir -p /etc/docker/certs.d/10.0.11.150:5000
# scp root@10.0.11.150:~/certs/domain.crt /etc/docker/certs.d/10.0.11.150:5000/ca.crt
# systemctl restart docker

至此,Docker私有库搭建完成。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值