docker远程连接证书生成步骤

服务器操作(Linux)

  1. 在任意目录创建证书文件夹,并进入该文件夹,例如

    mkdir -p /home/ca
    cd /home/ca
    
  2. 生成ca-key.pem 文件 设置密码

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

    需要输入两次相同的密码,期间看到的提示为:

    Generating RSA private key, 4096 bit long modulus
    ..............................................................................................................++
    ..++
    e is 65537 (0x10001)
    Enter pass phrase for ca-key.pem:
    Verifying - Enter pass phrase for ca-key.pem:
    
    

    完成后会看到文件夹里出现了 ca-key.pem 文件

  3. 生成 ca.pem 文件,设置国家、省市、组织名、邮箱

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

    需要输入刚才的密码,国家填CN,其他信息可以随便填,期间看到的提示为:

    Enter pass phrase for ca-key.pem:
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:xxx
    Locality Name (eg, city) [Default City]:xxx
    Organization Name (eg, company) [Default Company Ltd]:xxx
    Organizational Unit Name (eg, section) []:xxx
    Common Name (eg, your name or your server's hostname) []:xxx
    Email Address []:xxxxxxx@xxx.com 
    
    

    完成后会看到文件夹里出现了 ca.pem 文件

  4. 生成 server-key.pem 文件

    openssl genrsa -out server-key.pem 4096
    

    期间看到的其实为:

    Generating RSA private key, 4096 bit long modulus
    ..........................++
    .............................++
    e is 65537 (0x10001)
    

    完成后会看到文件夹里出现了 server-key.pem 文件

  5. 生成 server.csr 文件

    openssl req -subj "/CN=服务器的IP或域名" -sha256 -new -key server-key.pem -out server.csr
    

    没有报错的话会看到文件夹里出现了 server.csr 文件

  6. 生成配置文件 extfile.cnf

    echo subjectAltName = IP:服务器的IP,IP:0.0.0.0 >> extfile.cnf
    

    echo subjectAltName = DNS:服务器的域名,IP:0.0.0.0 >> extfile.cnf
    

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

    echo extendedKeyUsage = serverAuth >> extfile.cnf
    

    完成后会看到文件夹里出现了 extfile.cnf文件,打开可以看到刚才输入的两行配置

  7. 生成服务器证书,需要输入之前输入的密码

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

    完成后会看到文件夹里出现了 ca.srlserver-cert.pem 文件

  8. 添加配置,使密钥适合客户端身份验证

    echo extendedKeyUsage = clientAuth >> extfile.cnf
    
  9. 生成 key.pem 文件

    openssl genrsa -out key.pem 4096
    

    完成后会看到文件夹里出现了 key.pem文件

  10. 创建client.csr文件

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

    完成后会看到文件夹里出现了 client.csr文件

  11. 生成证书

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

    完成后会看到文件夹里出现了 cert.pem 文件

  12. 删除多余文件

    rm -v -f client.csr server.csr
    
  13. 修改权限,要保护您的密钥免受意外损坏,请删除其写入权限。要使它们只能被您读取,更改文件模式

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

    删除写入权限以防止意外损坏

    chmod -v 0444 ca.pem server-cert.pem cert.pem
    
  14. 复制证书到指定目录

    cp server-*.pem  /etc/docker/
    

    cp ca.pem /etc/docker/
    
  15. 修改Docker配置,使Docker守护程序仅接受来自提供CA信任的证书的客户端的连接

    修改文件 /lib/systemd/system/docker.service

    将其中的

    ExecStart=/usr/bin/dockerd
    

    修改为

    ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
    
  16. 重新加载daemon并重启docker

    systemctl daemon-reload 
    

    然后

    systemctl restart docker
    
  17. 开放2376端口

    通过防火墙、或阿里云控制台等操作

  18. 重启docker

    service docker restart
    

开发机器操作

  1. 下载如下文件到本地:ca.pem cert.pem key.pem ,将该文件夹配置为证书文件夹
  2. 连接URL: https://服务器IP:2376

一键脚本

#创建 Docker TLS 证书
#!/bin/bash
 

SERVER="服务器IP"
PASSWORD="密码"
COUNTRY="CN"
STATE="state"
CITY="city"
ORGANIZATION="Dev"
ORGANIZATIONAL_UNIT="Dev"
EMAIL="123@139.com"

#临时文件夹
TEMP_DIR='/home/ca'

mkdir -p ${TEMP_DIR}
cd ${TEMP_DIR}

#生成`ca-key.pem` 文件 设置密码
openssl genrsa -aes256 -passout pass:${PASSWORD} -out ca-key.pem 4096 
echo "生成ca私钥完成"


#生成 `ca.pem` 文件,设置国家、省市、组织名、邮箱

openssl req -new -x509  -passin "pass:${PASSWORD}"  -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=${COUNTRY}/ST=${STATE}/L=${CITY}/O=${ORGANIZATION}/OU=${ORGANIZATIONAL_UNIT}/emailAddress=${EMAIL}"
echo "填写配置信息完成"

#生成 `server-key.pem` 文件

openssl genrsa -out server-key.pem 4096

#生成 `server.csr` 文件

openssl req -subj "/CN=${SERVER}" -sha256 -new -key server-key.pem -out server.csr

#生成配置文件 `extfile.cnf` 

echo subjectAltName = IP:${SERVER},IP:0.0.0.0 >> extfile.cnf

echo extendedKeyUsage = serverAuth >> extfile.cnf

#生成服务器证书,需要输入之前输入的密码
openssl x509 -req -days 3650 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:${PASSWORD}"  \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

echo "生成自签证书完成"

#添加配置,使密钥适合客户端身份验证
echo extendedKeyUsage = clientAuth >> extfile.cnf
#生成 `key.pem` 文件
openssl genrsa -out key.pem 4096
#创建`client.csr`文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
#生成证书
openssl x509 -req -days 3650 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:${PASSWORD}" \-CAcreateserial -out cert.pem -extfile extfile.cnf
echo "生成client自签证书完成"
rm -v -f client.csr server.csr
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
echo "复制证书到指定目录"
cp server-*.pem  /etc/docker/
cp ca.pem /etc/docker/

systemctl daemon-reload 
systemctl restart docker

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Docker 中连接远程 GitLab 实现多人合并开发,你需要遵循以下步骤: 1. 首先,每个开发人员都需要在 GitLab 上创建一个账户,并获取他们的 SSH 公钥。他们可以使用以下命令生成 SSH 公钥: ``` ssh-keygen ``` 然后,将公钥添加到 GitLab 中。在 GitLab 的用户设置中,找到 "SSH Keys" 选项卡,并将公钥复制到其中。 2. 然后,你需要在 Docker 中安装 Git 和 SSH 工具。可以使用以下命令安装: ``` apt-get update apt-get install git ssh ``` 3. 接下来,将 GitLab 的 SSH 私钥添加到 Docker 中。每个开发人员都需要将他们的 GitLab SSH 私钥复制到 Docker 中的 `/root/.ssh` 目录下,并设置权限: ``` mkdir -p /root/.ssh chmod 700 /root/.ssh cp /path/to/private/key /root/.ssh/id_rsa chmod 600 /root/.ssh/id_rsa ``` 将 `/path/to/private/key` 替换成该开发人员的 GitLab SSH 私钥的路径。 4. 然后,每个开发人员都可以克隆 GitLab 项目到 Docker 中。他们可以使用以下命令: ``` git clone git@gitlab.com:your-repo.git /workspace/your-repo ``` 将 `git@gitlab.com:your-repo.git` 替换成 GitLab 项目的 SSH 地址。 5. 开发人员可以在 Docker 中编辑和提交代码,并将代码推送到 GitLab 仓库中。他们可以使用以下命令提交代码: ``` git add . git commit -m "commit message" git push origin master ``` 其中,`commit message` 是提交信息。 6. 当一个开发人员提交了代码后,其他开发人员可以使用以下命令将代码拉取到 Docker 中: ``` git pull origin master ``` 这将拉取 GitLab 仓库中最新的代码,并将其合并到 Docker 中的本地代码库中。 7. 如果有多个开发人员同时修改了同一个文件,可能会导致合并冲突。此时,开发人员需要使用以下命令解决合并冲突: ``` git checkout master git pull origin master git merge other-branch ``` 其中,`other-branch` 是其他开发人员的分支名称。这将合并其他开发人员的代码,解决合并冲突。 8. 如果开发人员需要在 Docker创建一个新分支,可以使用以下命令: ``` git checkout -b new-branch ``` 其中,`new-branch` 是新分支的名称。 9. 最后,当代码准备好合并时,可以在 GitLab 上创建一个合并请求。其他开发人员可以查看合并请求并进行审查,然后将其合并到主分支中。 以上是在 Docker 中连接远程 GitLab 实现多人合并开发的步骤

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值