需要掌握:docker开启远程通信和idea连接(学习环境)
介绍
下面命令部分,都是在docker所在的服务器上
如果是linux系统,默认自带openssl
如果是windows系统,需要另行下载openssl
创建文件夹
创建存放证书的文件夹
mkdir ca
cd ca
生成CA私钥
执行下面命令:
openssl genrsa -aes256 -out ca-key.pem 4096
会提示输入密码,该密码很重要,要记住,如下图:
创建CA证书
使用CA私钥生成CA证书
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
需要验证密码,即生成CA私钥时设置的密码
然后输入:国家、省、市、组织名称、单位名称、common name、邮箱等,可以直接回车
创建服务器私钥
openssl genrsa -out server-key.pem 4096
生成 server-key.pem 文件
生成服务端证书签名请求
根据 服务器私钥 生成服务端 证书签名请求
证书签名请求:certificate signing request,缩写:csr,里面包含公钥与服务端信息
openssl req -subj "/CN=docker服务器ip地址或域名" -sha256 -new -key server-key.pem -out server.csr
注意: 是用 IP地址,还是域名,取决于用哪种方式对外暴露服务器
我执行的命令
openssl req -subj "/CN=10.13.87.23" -sha256 -new -key server-key.pem -out server.csr
编写extfile.cnf(重要)
添加服务器ip 和 客户端ip (关键)
- 如果使用docker服务器的域名,执行下面命令:
注意:上面的echo subjectAltName = DNS:docker服务器域名,IP:XX.XX.XX.XX,IP:XX.XX.XX.XX >> extfile.cnfDNS:docker服务器域名,是DNS - 如果使用docker服务器的ip,执行下面命令:
注意:上面的echo subjectAltName = IP:docker服务器ip地址,IP:XX.XX.XX.XX,IP:XX.XX.XX.XX >> extfile.cnfIP:docker服务器ip地址,是IP
解释
XX.XX.XX.XX:允许访问docker服务器的ip地址,可以是多个ip地址。
允许所有的ip可以连接设置为:0.0.0.0
我执行的命令
echo subjectAltName = IP:126.153.165.120,IP:0.0.0.0 >> extfile.cnf
IP:126.153.165.120:docker服务器的ip
添加 extendedKeyUsage
扩展密钥用法,此扩展包含一个用法列表,用于指示证书公钥可用于的目的
echo extendedKeyUsage = serverAuth >> extfile.cnf
生成服务器签名证书(服务器端密钥结束)
生成服务器签名证书server-cert.pem
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
需要输入密码,该密码是:生成CA私钥 是设置的密码
执行结果如下:
subject=/CN=106.13.165.100
Getting CA Private Key
Enter pass phrase for ca-key.pem:
生成客户端私钥
创建文件夹
mkdir cilent
cd client
生成客户端私钥key.pem
openssl genrsa -out key.pem 4096
生成客户端证书签名请求
openssl req -subj "/CN=client" -new -key key.pem -out client.csr
生成extfile.cnf配置文件
echo extendedKeyUsage=clientAuth > extfile.cnf
生成签名文件cert.pem
将上面创建的ca-key.pem和ca.pem文件复制到client文件夹
cp ca-key.pem ca.pem client
openssl x509 -req -days 1000 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
需要输入密码,该密码是:生成CA私钥 是设置的密码
证书文件说明
- ca.pem:CA机构证书
- ca-key.pem:根证书RSA私钥
- cert.pem:客户端证书
- key.pem:客户私钥
- server-cert.pem:服务端证书
- server-key.pem:服务端私钥
其余文件可删除
配置docker服务器
vim /lib/systemd/system/docker.service
修改如下:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/root/ca/ca.pem --tlscert=/root/ca/server-cert.pem --tlskey=/root/ca/server-key.pem -H fd:// -H tcp://0.0.0.0:2375
重新加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker
配置客户端
从linux服务器下载下面文件:
- ca.pem:CA机构证书
- cert.pem:客户端证书
- key.pem:客户私钥
放到一个文件夹里,
感谢:
https://www.imooc.com/article/290381?block_id=tuijian_wz
https://www.cnblogs.com/niceyoo/p/13270224.html
https://blog.csdn.net/alinyua/article/details/81086124
https://blog.csdn.net/boling_cavalry/article/details/100601169



