Docker配置SSL证书实现远程访问

 更新时间:2025年01月02日 11:08:49   作者:Asurplus  
本文主要介绍了使用OpenSSL生成CA证书和服务器证书并配置Docker以支持SSL连接实现远程访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、使用 openssl 生成 ca

  • 1、创建文件夹
mkdir -p /root/docker
cd /root/docker
  • 2、创建 RSA 私钥

会提示 2 次输入证书密码,至少 4 位,创建后会生成一个 ca-key.pem 文件

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

得到 ca-key.pem 文件

  • 3、创建 CA 证书

根据 ca-key.pem 密钥创建 CA 证书,需要输入一次前面的私钥密码,这里是自己给自己签发证书

openssl req -new -x509 -days 999 -key ca-key.pem -sha256 -subj "/CN=*" -out ca.pem

得到 ca.pem 文件

  • 4、创建服务端私钥
openssl genrsa -out server-key.pem 4096

得到 server-key.pem

  • 5、创建服务端签名请求证书文件
openssl req -subj "/CN=*" -sha256 -new -key server-key.pem -out server.csr

得到 server.csr 文件

  • 6、指定 IP

允许指定的 ip 可以连接到服务器中的 docker,多个 ip 用逗号分隔,把下面的 2 个 127.0.0.1 改成服务器 IP 地址

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

得到 extfile.cnf 文件

  • 7、将 Docker 守护程序密钥的扩展使用属性设置为仅用于服务器身份验证
echo extendedKeyUsage = serverAuth >> extfile.cnf
  • 8、创建签名生效的服务端证书文件

需要输入一次前面设置的密码

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

得到 server-cert.pem 文件

  • 9、创建客户端私钥

用于客户端远程连接的认证

openssl genrsa -out key.pem 4096
  • 10、创建客户端签名请求证书文件
openssl req -subj "/CN=client" -new -key key.pem -out client.csr

得到 client.csr 文件

  • 11、创建 extfile.cnf 的配置文件
echo extendedKeyUsage = clientAuth > extfile-client.cnf
  • 12、创建签名生效的客户端证书文件

需要输入一次前面设置的密码

openssl x509 -req -days 999 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
  • 13、删除多余的文件
rm -rf ca.srl client.csr extfile.cnf extfile-client.cnf server.csr

我们剩下的文件有:

ca.pem,CA机构证书
ca-key.pem,根证书RSA私钥
cert.pem,客户端证书
key.pem,客户私钥
server-cert.pem,服务端证书
server-key.pem,服务端私钥

2、配置 Docker 支持 TSL 连接

vim /lib/systemd/system/docker.service

找到 ExecStart = 开头的一行代码,把默认的

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

追加内容如下:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock \
	--tlsverify --tlscacert=/etc/docker/ca.pem \
	--tlscert=/etc/docker/server-cert.pem \
	--tlskey=/etc/docker/server-key.pem \
	-H tcp://0.0.0.0:2375

3、重启 Docker

  • 刷新配置
systemctl daemon-reload
  • 重启 Docker
systemctl restart docker

4、远程连接 Docker

  • 1、下载证书

将服务器上生成的 ca.pem、cert.pem、key.pem 文件下载至本地指定文件夹下

在这里插入图片描述

  • 2、IDEA 中连接 Docker

在这里插入图片描述

使用 TCP socket 方式连接 Docker

https://192.168.52.132:2375

  • Certificates folder 选择下载的证书文件夹

E:\Desktop\docker

出现 Connection successful 则表示 Docker 连接成功

到此这篇关于Docker配置SSL证书实现远程访问的文章就介绍到这了,更多相关Docker SSL远程访问 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用docker启动redis守护进程的详细流程

    使用docker启动redis守护进程的详细流程

    在现代软件开发中,缓存和消息队列是提高应用性能和扩展性的关键,Redis 是一种流行的内存数据结构存储系统,使用 Docker 容器化技术可以方便地部署和管理 Redis 服务,本文给大家介绍了使用docker启动redis守护进程的详细流程,需要的朋友可以参考下
    2025-01-01
  • Docker中的harbor私有仓库详解

    Docker中的harbor私有仓库详解

    Harbor是VMware开源的企业级Docker镜像仓库,基于Docker Registry扩展了权限控制、审计日志、镜像复制等功能,支持HTTP/HTTPS协议,通过docker-compose部署,包含7个容器组件,提供图形化界面和RESTful API管理
    2025-10-10
  • Docker 镜像源配置详细步骤

    Docker 镜像源配置详细步骤

    文章介绍了如何配置Docker镜像源以提高国内拉取镜像的速度,步骤包括找到并编辑配置文件、写入镜像源配置、重启Docker服务等,文章还详细比较了systemctl和service的区别,并提供了验证配置是否成功的命令,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • 加速拉取MySQL Docker镜像的两种方法

    加速拉取MySQL Docker镜像的两种方法

    在使用 Docker 部署 MySQL 时,许多开发者会遇到拉取镜像速度缓慢的问题,这主要是由于 Docker Hub 的服务器在国外,网络延迟较高,幸运的是,我们可以通过配置国内镜像加速器或使用国内镜像仓库的代理地址来解决这一问题,本文将详细介绍这两种方法,需要的朋友可以参考下
    2025-07-07
  • docker+nextcloud搭建个人云存储系统的实现

    docker+nextcloud搭建个人云存储系统的实现

    这篇文章主要介绍了docker+nextcloud搭建个人云存储系统的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • docker中的jenkins之流水线构建项目步骤详解

    docker中的jenkins之流水线构建项目步骤详解

    jenkins有2种流水线分为声明式流水线与脚本化流水线,脚本化流水线是jenkins旧版本使用的流水线脚本,新版本Jenkins推荐使用声明式流水线,本文给大家介绍docker中的jenkins之流水线构建项目,感兴趣的朋友一起看看吧
    2023-08-08
  • docker使用alpine构建jdk21镜像的详细步骤

    docker使用alpine构建jdk21镜像的详细步骤

    这篇文章主要给大家介绍了关于docker使用alpine构建jdk21镜像的详细步骤,镜像中包含了应用程序所需要的运行环境,函数库,配置,以及应用本身等各种文件,这些文件分层打包而成,需要的朋友可以参考下
    2024-03-03
  • Docker探索namespace详解

    Docker探索namespace详解

    以前对docker中的namespace了解甚少,今天在网上查阅相关文章,发现这篇还不错,介绍了namespace资源隔离以及进行namespace api操作的四种方式等内容,这里分享给大家,供参考。
    2017-10-10
  • Docker容器镜像加载及底层基本原理深入解析

    Docker容器镜像加载及底层基本原理深入解析

    这篇文章主要为大家介绍了Docker容器镜像加载及底层基本原理深入分析,让大家能够有更深入的理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • docker 如何修改容器的端口

    docker 如何修改容器的端口

    正在运行的容器端口冲突了,但是还需要这个容器,怎么办?只能修改端口了,今天通过本文给大家介绍docker 如何修改容器的端口,感兴趣的朋友一起看看吧
    2024-01-01

最新评论