我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker开启TLS和CA认证的方法步骤

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Docker开启TLS和CA认证的方法步骤

前言:Docker直接开启2375端口是不安全的,别人只要连上之后就可以任意操作,下面是开启Docker的TLS和CA认证方法,并使用Jenkins和Portainer连接。

一、生成证书

查看服务器主机名


hostname

auto-generate-docker-tls-ca.sh


# !/bin/bash

# 一键生成TLS和CA证书

# Create : 2021-08-25
# Update : 2021-08-25
# @Autor : wuduoqiang

# 服务器主机名
SERVER="6c377ffb8e86"
# 密码
PASSWORD="2cx&BUjsV4u%3TW9"
# 国家
COUNTRY="CN"
# 省份
STATE="海南省"
# 城市
CITY="海口市"
# 机构名称
ORGANIZATION="小强崽公司"
# 机构单位
ORGANIZATIONAL_UNIT="小强崽单位"
# 邮箱
EMAIL="875667601@qq.com"

# 生成CA密钥
openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 2048

# 生成CA证书
openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca-cert.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"

# 生成服务端密钥
openssl genrsa -out server-key.pem 2048

# 生成服务端证书签名的请求文件
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server-req.csr

# 生成服务端证书
openssl x509 -req -days 3650 -in server-req.csr -CA ca-cert.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem

# 生成客户端密钥
openssl genrsa -out client-key.pem 2048

# 生成客户端证书签名的请求文件
openssl req -subj '/CN=client' -new -key client-key.pem -out client-req.csr

# 生成客户端证书
sh -c 'echo "extendedKeyUsage=clientAuth" >> extfile.cnf'
openssl x509 -req -days 3650 -in client-req.csr -CA ca-cert.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out client-cert.pem -extfile extfile.cnf

# 更改密钥权限
chmod 0400 ca-key.pem server-key.pem client-key.pem
# 更改证书权限
chmod 0444 ca-cert.pem server-cert.pem client-cert.pem
# 删除无用文件
# rm ca-cert.srl client-req.csr server-req.csr extfile.cnf

文件说明


ca.srl:CA签发证书的序列号记录文件
ca-cert.pem:CA证书
ca-key.pem:CA密钥
server-key.pem:服务端密钥
server-req.csr:服务端证书签名请求文件
server-cert.pem:服务端证书
client-key.pem:客户端密钥
extfile.cnf:客户端证书扩展配置文件
client-req.csr:客户端证书签名请求文件
client-cert.pem:客户端证书

命令解析


# -subj /C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL
-subj 是 指定证书申请人的信息
C  是 Country Name
ST 是 State or Province Name
L  是 Locality Name
O  是 Organization Name
OU 是 Organizational Unit Name
CN 是 Common Name
emailAddress 是 Email Address

二、开启远程

开启Docker的远程访问API


# 编辑文件
vim /etc/systemd/system/docker.service
# 修改内容,注意证书的指定位置
ExecStart=/usr/bin/dockerd \
--tlsverify \
--tlscacert=/etc/docker/ca-cert.pem \
--tlscert=/etc/docker/server-cert.pem \
--tlskey=/etc/docker/server-key.pem \
-H unix:///var/run/docker.sock \
-H tcp://0.0.0.0:2375
# 重启服务
systemctl daemon-reload && systemctl restart docker

如果没有密钥和证书是连不上的


docker -H 192.168.8.248:2375 images

使用主机名没有密钥和证书也是连不上的


docker -H 6c377ffb8e86:2375 images

加上密钥和证书没有使用主机名也是连不上


curl https://192.168.8.248:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem

加上密钥和证书并且使用主机名就能访问


curl https://6c377ffb8e86:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem

三、远程连接

3.1 Jenkins连接

添加凭证

填写信息

测试连接,注意这里要使用主机名

如果是docker安装的jenkins,则需要映射主机名


version: '3'
services:
  jenkins:
    restart: always
    image: 192.168.8.247/xiaoqiangzai/jenkins:latest
    container_name: jenkins
    ports:
      - '8888:8080'
      - '50000:50000'
    volumes:
      - ./data/jenkins_home:/var/jenkins_home
      - ./data/war/jenkins.war:/usr/share/jenkins/jenkins.war
    environment:
      JENKINS_OPTS: "--prefix=/jenkins"
    extra_hosts:
      - "6c377ffb8e86:192.168.8.248"

3.2 Portainer连接

选择客户端密钥和证书以及CA证书

连接正常

如果是docker安装的Portainer,则需要映射主机名


version: '3'
services:
  portainer:
    restart: always
    image: portainer/portainer-ce:latest
    container_name: portainer
    privileged: true
    ports:
      - '9000:9000'
    volumes:
      - ./data/data:/data
      - ./data/public:/public
    extra_hosts:
      - "6c377ffb8e86:192.168.8.248"

到此这篇关于Docker开启TLS和CA认证的方法步骤的文章就介绍到这了,更多相关Docker开启TLS和CA认证内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker开启TLS和CA认证的方法步骤

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Ubuntu20.04开启root账户的方法步骤

Ubuntu20.04安装完成之后默认是没有root账户登录权限的,按照以下步骤即可实现开机一步完成root账户登录,看完你会不会觉得很方便呢1. 第一步 以普通用户登录系统,创建root用户的密码 在终端输入命令:sudo passwd
2022-06-04

开启MySQL的binlog日志的方法步骤

binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么关注,但是对于运维或者架构人员来讲是非常
2022-05-12

MySQL8.0开启远程连接权限的方法步骤

目录问题描述:报错原因:解决方法:总结问题描述:开发环境:mysql8+Centos8;执行MySQL语句:mysql -h 180.76.XXX.XX -u root -pPassword;报错原因:ERROR 1130 (HY0
2022-06-30

springboot集成JWT实现身份认证(权鉴)的方法步骤

本文主要介绍了springboot集成JWT实现身份认证(权鉴)的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-16

win7系统中的防火墙设置开机自启的方法与步骤

系统防火墙是为了抵御木马或病毒入侵一层屏障,需http://www.cppcns.com要开机随机启动,才能起到主动防御病毒。那么,怎么设置win7系统编程客栈防火墙开机自动开启呢? 方法/步骤 1、桌面计算机右击 打开管理。打开管理 2
2023-06-08

android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法

步骤:分两步 一、usb连接: 在Ubuntu挂载使用MTP设备步骤如下: 1.将MTP设备连接至PC机 2.如果是第一次使用MTP设备需要安装以下软件,否则可以跳过此步骤:代码如下:$ sudo apt-get install mtpfs
2022-06-06

Win10玩游戏卡顿闪退怎么回事 Win10玩游戏卡顿闪退开启DirectPlay的方法步骤

win10玩游戏卡顿或闪退怎么解决?最近有不少网友反馈,电脑升级Win10后,玩一些经典老游戏,经常会出现卡顿甚至是闪退的现象。按理说配置并不低,升级Win10前都能流畅运行,升级后反而变得不好用了。那么,Win10玩游戏卡顿闪退怎么解决?
2023-05-21

编程热搜

目录