前文中我们曾经介绍过《使用IDEA远程工具》连接Docker REST API,我们会发现一个问题,任何知道Docker 服务器IP、端口的第三方都可以访问这个API,非常的不安全。为了保证Docker API的安全性,我们有必要使用数字证书进行安全验证。,如果只在自己公司内部使用到数字证书,就没有必要花钱向专业的CA机构进行认证授权(价格不菲),采用自生成的CA证书在公司内部使用也是完全可以的。下图是CA证书及子证书的签发过程,请结合文章进行理解。,
,正常情况下CA机构有自己的私钥,因为我们是模拟CA机构,所以这个私钥需要我们自己创建。执行下文中的命令,输入2次密码(密码务必记住,后文中需要使用),执行完命令之后,当前目录下生成一个
ca-key.pem
文件(上图中红色背景代表)。,该命令用于创建机构CA证书,执行该命令首先会提示输入
密码(上文中设置的)。正常请开给你下,该流程是某公司向CA提机构提交自己公司的相关信息,CA授权机构根据这些信息(审核信息之后)生成一个用于该公司的CA证书(该公司范围的根证书)。,然后提示需要输入国家、省份、地市、公司、组织、服务器地址或域名、邮箱联系方式,其中国家和服务器地址或域名要填上,否则后续无法使用。,当前目录下生成一个
ca.pem
,该证书就是CA证书,CA证书还可以用于签发子证书(数字证书),下面我们就模拟签发一个服务端证书。仍然需要先创建一个服务器端私钥
server-key.pem
,创建服务器端CSR
server.csr
,该文件作为向授权机构申请签发子证书的申请文件,模拟授权机构创建配置文件,
serverAuth
表示服务端证书,创建服务器端证书会提示输入密码,输入上文中设置的
密码即可。,生成2个文件ca.srl、server-cert.pem,我们需要的是
server-cert.pem
作为服务端CA证书,下面我们就模拟签发一个客户端证书。仍然需要先创建一个客户端私钥
key.pem
,创建客户端CSR
client.csr
,该文件作为向授权机构申请签发子证书的申请文件,模拟授权机构创建配置文件,
clientAuth
表示客户端证书,执行下列命令同样会提示输入密码,生成2个文件
ca.srl
、
cert.pem
,我们需要的是
cert.pem
作为客户端证书,删除证书签发请求文件,已经失去用处。,为上文中生成的各种证书授予文件访问权限。,查看CA证书有效期,然后我们为docker服务端配置证书,分别是ca.pem、server-cert.pem、server-key.pem。将这三个文件放入
/etc/docker/cert/
目录下。,修改
vim /lib/systemd/system/docker.service
文件中的
ExecStart
这一行,修改为如下的一段,修改之后重启docker服务,我们在IDEA docker插件客户端证书配置处做如下选择:“File -> Settings -> Build、Execution、Deployment -> Docker”,