ssl - docker 群证书到期

标签 ssl docker docker-swarm

我正在尝试创建一个拥有 1 年或更长时间后过期证书的 docker swarm。文档说明了语法,我尝试了这个 docker swarm init --cert-expiry 8760h0m0s 但是在 cat/var/lib/docker/swarm/certificates/swarm-node.crt 下,当我破译证书时,有效期仍然是 3 个月。我如何确保有效性是我设置的?

最佳答案

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

生成服务器证书

  1. 生成 CA 私钥和公钥:

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

    openssl genrsa -out server-key.pem 4096
    openssl req -subj "/CN=my.company.com" -sha256 -new -key server-key.pem -out server.csr
    
  3. 用 CA 签署公钥:

    echo subjectAltName = DNS:my.company.com,IP:127.0.0.1 >> extfile.cnf
    echo extendedKeyUsage = serverAuth >> extfile.cnf
    
  4. 生成 key :

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

生成客户端证书

  1. 创建客户端 key 和证书签名请求:

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

    echo extendedKeyUsage = clientAuth >> extfile.cnf
    
  3. 签署私钥:
    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
    
  4. 将 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

看看这篇文章Building Jenkins Pipelines – Setting Up Docker Swarm .那里有分步指南。

关于ssl - docker 群证书到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854179/

相关文章:

apache - 为什么某些 apache 服务器的 htaccess 检测不到 https?

html - IE8后退按钮重置表单

windows - Chrome (v71) ERR_CONNECTION_RESET 在 Windows 8 Embedded 上的自签名本地主机上

java - 从 'RUN ./mvnw dependency:go-offline -B' 为 Spring Boot 应用程序构建 docker 镜像时,无法运行 "openjdk:8-jdk-alpine"

对 Twitter 的 Python Oauth 请求产生响应 403 - 需要 SSL

spring-boot - 如何显示通过哪个cassandra节点处理您的请求

java.io.IOException : parseAlgParameters failed: PBE AlgorithmParameters not available, 当 docker 容器尝试访问 rabbitmq TLS 端口时导致

docker - Docker Swarm代理如何将其IP告诉Swarm Manager?

docker - 在 compose 文件中指定 docker 网络范围

docker - Web API端点可与docker-compose.yml一起使用,但不适用于仅使用Dockerfile进行构建和运行的情况