docker远程通信和idea连接(安全环境)

需要掌握: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.cnf
    
    注意:上面的DNS:docker服务器域名,是DNS
  • 如果使用docker服务器的ip,执行下面命令:
    echo subjectAltName = IP:docker服务器ip地址,IP:XX.XX.XX.XX,IP:XX.XX.XX.XX >> extfile.cnf
    
    注意:上面的IP: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


原文出处:/show_1EF5tWgJ4guD.html