Idea使用证书远程连接Linux Docker

环境

环境版本
Idea2020.1
Docker20.10.2
Cent OS8
VMware Workstation Pro15
Xftp7

Docker插件

先在idea中安装docker插件,选择File->Settings...->Plugins

在Marketplace搜索框中输入docker查询,然后选择install

 安装成功后选择Build,Execution,Deployment->Docker->选择'+'号新建

将Engine API URL改为'http://自己服务器的ip:2375'

生成CA证书

(这里为Cent OS虚拟机)新建一个文件将下面内容复制进去保存为cert.sh文件(名称自定义)

#!/bin/bash
#服务器ip或者域名
DOMAIN_HOST=192.168.0.149
# 自定义信息
PASSWORD="docker"
#管理员权限密码
ADMINPASSWORD="admin123..."
#国家
COUNTRY=CN
#省份
PROVINCE=xx
#城市
CITY=xx
#组织
ORGANIZATION=xx
#团体
GROUP=xx
#名称
NAME=xx
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$DOMAIN_HOST"
# 自定义信息
#========================================================================================
#此形式是自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发
# 生成根证书RSA私钥,password作为私钥密码(身份证)
rm -rf ca/
mkdir ca
echo "开始生成证书"
openssl genrsa -passout "pass:$PASSWORD" -aes256 -out ca/ca-key.pem 4096
# 2.用根证书RSA私钥生成自签名的根证书(营业执照)
openssl req -new -x509 -days 3650 -passin "pass:$PASSWORD" -key ca/ca-key.pem -sha256 -subj $SUBJ -out ca/ca.pem
#========================================================================================
#给服务器签发证书
# 1.服务端生成自己的私钥
openssl genrsa -out ca/server-key.pem 4096
# 2.服务端生成证书(里面包含公钥与服务端信息)
openssl req -subj "/CN=$DOMAIN_HOST" -sha256 -new -key ca/server-key.pem -out ca/server.csr 
# 3.通过什么形式与我进行连接,可设置多个IP地扯用逗号分隔
echo subjectAltName=IP:$DOMAIN_HOST,IP:0.0.0.0 >> ca/extfile.cnf
echo extendedKeyUsage=serverAuth >> ca/extfile.cnf
# 4.权威机构对证书进行进行盖章生效
openssl x509 -passin "pass:$PASSWORD" -req -days 3650 -sha256 -in ca/server.csr -CA ca/ca.pem -CAkey ca/ca-key.pem -CAcreateserial -out ca/server-cert.pem -extfile ca/extfile.cnf
#========================================================================================
#给客户端签发证书
openssl genrsa -out ca/key.pem 4096
openssl req -subj '/CN=client' -new -key ca/key.pem -out ca/client.csr
echo extendedKeyUsage=clientAuth >> ca/extfile.cnf
openssl x509 -passin "pass:$PASSWORD" -req -days 3650 -sha256 -in ca/client.csr -CA ca/ca.pem -CAkey ca/ca-key.pem -CAcreateserial -out ca/cert.pem -extfile ca/extfile.cnf
#========================================================================================
# 清理临时文件
echo "清理临时文件"
rm -rf ca/client.csr ca/server.csr
#echo "$PASSWORD" |sudo -S获取管理员权限,根据自己需要使用
#设置文件权限
echo "设置文件权限"
echo "$ADMINPASSWORD" |sudo -S chmod -v 0400 ca/ca-key.pem ca/key.pem ca/server-key.pem
echo "$ADMINPASSWORD" |sudo -S chmod -v 0444 ca/ca.pem ca/server-cert.pem ca/cert.pem
#复制文件至docker目录下
echo "复制文件至docker目录下"
echo "$ADMINPASSWORD" |sudo -S cp ca/server-cert.pem ca/ca.pem ca/server-key.pem /etc/docker/
# 最终文件
# ca.pem  ==  CA机构证书
# client-cert.pem  ==  客户端证书
# client-key.pem  ==  客户私钥
# server-cert.pem  == 服务端证书
# server-key.pem  ==  服务端私钥
###生成结束###
#docker文件路径/usr/systemd/system/docker.service
#原始值:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#开始修改docker启动配置文件,替换第13行内容
echo "开始修改docker配置文件"
echo "$ADMINPASSWORD" |sudo -S sed -i '13c ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock' /usr/lib/systemd/system/docker.service
#重启docker
echo "重启docker"
systemctl daemon-reload && systemctl restart docker
echo "配置完成"

然后输入sh cert.sh运行脚本,最后重启docker时会出现两次认证提示需要输入密码确定

[admin@bogon ca2]$ sh cert.sh
开始生成证书
Generating RSA private key, 4096 bit long modulus (2 primes)
........................................................................................................................................................................................................................................................................++++
...............................++++
e is 65537 (0x010001)
Generating RSA private key, 4096 bit long modulus (2 primes)
.......++++
................++++
e is 65537 (0x010001)
Signature ok
subject=CN = 192.168.0.149
Getting CA Private Key
Generating RSA private key, 4096 bit long modulus (2 primes)
...............................................................................................................++++
..........................................................................................................................................................................................................................................................................++++
e is 65537 (0x010001)
Signature ok
subject=CN = client
Getting CA Private Key
清理临时文件
设置文件权限
[sudo] admin 的密码:mode of 'ca/ca-key.pem' changed from 0600 (rw-------) to 0400 (r--------)
mode of 'ca/key.pem' changed from 0600 (rw-------) to 0400 (r--------)
mode of 'ca/server-key.pem' changed from 0600 (rw-------) to 0400 (r--------)
mode of 'ca/ca.pem' changed from 0664 (rw-rw-r--) to 0444 (r--r--r--)
mode of 'ca/server-cert.pem' changed from 0664 (rw-rw-r--) to 0444 (r--r--r--)
mode of 'ca/cert.pem' changed from 0664 (rw-rw-r--) to 0444 (r--r--r--)
复制文件至docker目录下
开始修改docker配置文件
重启docker
Failed to reload daemon: Method call timed out
配置完成
[admin@bogon ca2]$ 

使用Xftp将生成的ca文件夹(ca文件夹生成再在cert.sh文件所在文件夹)复制到本地

选择刚才复制下来的ca文件夹

(本例测试为主,所以ca文件夹扔桌面了,正常使用记得不要乱扔)

点击apply(应用),选择ok关闭页面,在右侧或者下方寻找Service打开

 选择绿三角启动,就能看到虚拟机上docker中的镜像和容器了


 参考资料

1.https://blog.csdn.net/oceanyang520/article/details/101563309

2.https://blog.csdn.net/Mr_Duanlife/article/details/105981521?utm_term=docker%E8%AF%81%E4%B9%A6%E8%84%9A%E6%9C%AC&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-8-105981521&spm=3001.4430

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值