通信安全—docker建立客户端与服务端TLS证书连接
一、TLS证书的作用
在远程上调用Docker时,若没有设置TLS证书,那么docker能被所有人调用,而TLS的作用就是限制指定的主机对Docker进行远程调用,从而保证docker的安全。
二、创建证书
使用openssl来创建CA,并签署秘钥/证书。
1、创建目录
首先创建一个certs目录,并内置三个子目录 ca、client、server,分别用来存放证书,客户端密钥,服务端密钥。
### 在登录用户下递归创建三个目录
mkdir -p ~/certs/{
ca,client,server}
2、创建私钥
运行openssl创建CA秘钥,并将CA证书保存在~/certs/ca 目录下。
###创建密钥ca-key.pem,用于创建对应的证书
openssl genrsa -out ~/certs/ca/ca-key.pem 2048
3、创建证书
通过创建的密钥,创建
###创建证书:ca.pem
openssl req -x509 -new -nodes -key ~/certs/ca/ca-key.pem \ -days 10000 -out ~/certs/ca/ca.pem -subj '/CN=docker-CA'
4、创建扩展配置文件
创建一个用于client的openssl配置文件~/certs/client/openssl.cnf
###创建文件:openssl.cnf
vim ~/certs/client/openssl.cnf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
创建一个用于server的openssl配置文件~/certs/server/openssl.cnf
alt_names中的ip为Docker Server的ip,即client需要访问的ip,若有多个docker服务,此处填写多个,否则client将无法访问Docker Server
###创建配置文件:openssl.cnf
vim ~/certs/server/openssl.cnf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[