首页
技术
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

handazao

养家糊口
首页
技术
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Docker使用

    • docker及docker compose 安装
    • docker 设置时区
    • 配置Docker启用TLS,开启远程安全访问
      • 推荐访问官方文档
        • 配置Docker启用TLS
        • 1.首先,在Docker 守护进程的主机上,生成 CA 私钥和公钥:
        • 2.接下来,我们将使用我们的 CA 签署公钥:
        • 3.现在,生成签名证书:
        • 4.修改docker配置文件
        • 5.idea配置
    • docker命令
    • nginx之二级域名配置
    • docker仓库
  • 数据库相关

  • Java相关

  • Linux学习

  • 工具

  • vue3

  • Git

  • 技术
  • Docker使用
handazao
2022-11-18
目录

配置Docker启用TLS,开启远程安全访问

# 推荐访问官方文档


https://docs.docker.com/engine/security/protect-access/

1
2
3

# 配置Docker启用TLS

# 1.首先,在Docker 守护进程的主机上,生成 CA 私钥和公钥:

openssl genrsa -aes256 -out ca-key.pem 4096
1

输入密码,确认密码

img.png

 openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
1

依次输入密码、国家、省、市、组织名称等(除了密码外其他的可以直接回车跳过)

img_1.png

现在您有了 CA,您可以创建服务器密钥和证书签名请求 (CSR)。确保“Common Name”与您用来连接到 Docker 的主机名相匹配:

注意:

将以下示例所有实例中的 $HOST 替换为 服务器外网的IP或者域名

openssl genrsa -out server-key.pem 4096

openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
1
2
3

# 2.接下来,我们将使用我们的 CA 签署公钥:

注意:

由于可以通过 IP 地址和 DNS 名称建立 TLS 连接,因此在创建证书时需要指定 IP 地址。0.0.0.0表示所有ip都可以连接。(这里需要注意,虽然0.0.0.0可以匹配任意,但是仍需要配置你的外网ip和127.0.0.1,否则客户端会连接不上)

echo subjectAltName = IP:0.0.0.0,IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf

echo subjectAltName = DNS:$HOST,IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf
1

将 Docker 守护程序密钥的扩展使用属性设置为仅用于服务器身份验证:

 echo extendedKeyUsage = serverAuth >> extfile.cnf

1
2

# 3.现在,生成签名证书:

 openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out server-cert.pem -extfile extfile.cnf
1
2

img_2.png

对于客户端身份验证,创建客户端密钥和证书签名请求:

openssl genrsa -out key.pem 4096
1

注意:

 openssl req -subj '/CN=client' -new -key key.pem -out client.csr

1
2

要使密钥适用于客户端身份验证,请创建一个新的扩展配置文件:

echo extendedKeyUsage = clientAuth > extfile-client.cnf
1

现在,生成签名证书:

 openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \
  -CAcreateserial -out cert.pem -extfile extfile-client.cnf
1
2

cert.pem,server-cert.pem生成后您可以安全地删除两个证书签名请求和扩展配置文件:

rm -v client.csr server.csr extfile.cnf extfile-client.cnf
1

为保护您的密钥免受意外损坏,请删除其写入权限。要使它们只能由您读取,请按如下方式更改文件模式:

chmod -v 0400 ca-key.pem key.pem server-key.pem
1

证书可以是可读的,但您可能希望删除写入权限以防止意外损坏:

chmod -v 0444 ca.pem server-cert.pem cert.pem
1

# 4.修改docker配置文件

vim /usr/lib/systemd/system/docker.service
1

修改如下内容:

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376 --tlsverify --tlscacert=/etc/docker/ca.pem
--tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H unix://var/run/docker.sock
1
2

重新加载docker配置后重启

systemctl daemon-reload

systemctl restart docker
1
2
3
netstat -nltp | grep 2376
1

# 5.idea配置

img_3.png

#docker
上次更新: 2022/12/06, 11:10:28
docker 设置时区
docker命令

← docker 设置时区 docker命令→

最近更新
01
pre-push
08-07
02
commit-msg
08-07
03
pre-commit
08-07
更多文章>
Theme by Vdoing | Copyright © 2020-2024 handazao | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式