Ssl docker swarm证书到期

Ssl docker swarm证书到期,ssl,docker,docker-swarm,Ssl,Docker,Docker Swarm,我正在尝试创建一个docker swarm,其证书将在1年或更长时间后过期。文档说明了语法,我尝试了这个docker swarm init--cert expiration 8760h0m0s 然而,在cat/var/lib/docker/swarm/certificates/swarm node.crt下,当我解密证书时,有效期仍然是3个月。如何确保有效性是我设置的?您可以使用OpenSSL工具手动生成证书,并配置Docker守护进程以使用这些证书 生成服务器证书 生成CA私钥和公钥: ope

我正在尝试创建一个docker swarm,其证书将在1年或更长时间后过期。文档说明了语法,我尝试了这个
docker swarm init--cert expiration 8760h0m0s

然而,在
cat/var/lib/docker/swarm/certificates/swarm node.crt下,当我解密证书时,有效期仍然是3个月。如何确保有效性是我设置的?

您可以使用OpenSSL工具手动生成证书,并配置Docker守护进程以使用这些证书

生成服务器证书

  • 生成CA私钥和公钥:

    openssl genrsa -aes256 -out ca-key.pem 4096
    openssl req -new -x509 -days 1000 -key ca-key.pem -sha256 -out ca.pem
    
  • 创建服务器密钥和证书签名请求(CSR):

  • 使用CA对公钥进行签名:

    echo subjectAltName = DNS:my.company.com,IP:127.0.0.1 >> extfile.cnf
    echo extendedKeyUsage = serverAuth >> extfile.cnf
    
  • 生成密钥:

    openssl x509 -req -days 1000 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
    
  • 生成客户端证书

  • 创建客户端密钥和证书签名请求:

    openssl genrsa -out key.pem 4096
    openssl req -subj '/CN=client' -new -key key.pem -out client.csr
    
  • 创建扩展配置文件:

    echo extendedKeyUsage = clientAuth >> extfile.cnf
    
  • 签名私钥:
    openssl x509 -req -days 1000 -sha256 -in client.csr -CA ../server/ca.pem -CAkey ../server/ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
    
  • 将cert.pem导出为PFX格式,以添加到受信任的根证书颁发机构中
    openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.pfx
    
  • 使用/etc/Docker/daemon.json配置Docker守护程序

    {
        "debug": false,
        "tls": true,
        "tlsverify": true,
        "tlscacert": "/etc/docker/certificates/server/ca.pem",
        "tlscert": "/etc/docker/certificates/server/server-cert.pem",
        "tlskey": "/etc/docker/certificates/server/server-key.pem",
        "hosts": ["tcp://0.0.0.0:2376", "unix:///var/run/docker.sock"]
    }
    
    启动Docker服务

    systemctl start docker
    

    看看这篇文章。这里有一个分步指南。

    在任何管理节点上运行以下命令:

    docker swarm update --cert-expiry 8760h0m0s
    docker swarm ca --rotate | openssl x509 -text -noout
    
    第一个将设置证书到期日期。
    最后一个将实际应用更改并自动在所有swarm节点上轮换证书。如果对解码证书文本输出不感兴趣,可以省略openssl部分。

    您应该包括该链接中的一些信息here@JammyDodger谢谢你指出,我已经用更多的细节更新了答案
    docker swarm update --cert-expiry 8760h0m0s
    docker swarm ca --rotate | openssl x509 -text -noout