支持多环境的SSL / TLS私钥链

时间:2019-03-06 05:23:54

标签: docker ssl nginx

我可以通过一个接一个的链接来创建包含多个私钥的SSL / TLS私钥文件吗?

所以链看起来像:

-----BEGIN RSA PRIVATE KEY-----
.
.
9TvrBymCYT1AYhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABzg6jGPUo2oU6vl
cqKzgV8XpRqdKtzrI/2Bskxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
7ptgeHcEOtNhqmXgO+utKDrzG0ekpW3W+eCRBe6ncxGVIrk/2fglov9sWwolvVSr
.
.
-----END RSA PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
.
.
9TvrBymCYT1AYhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABzg6jGPUo2oU6vl
cqKzgV8XpRqdKtzrI/2Bskxxxffffffffffffffffffffffffffffffffffffffx
7ptgeHcEOtNhqmXgO+utKDrzG0ekpW3W+eCRBe6ncxGVIrk/2fglov9sWwolvVSr
.
.
-----END RSA PRIVATE KEY-----

我正在尝试构建可用于所有环境(DEV,QA,UAT)的Nginx Docker映像。并尝试避免在非常环境下构建映像。以下是Dockerfile

FROM nginx:1.15.0-alpine

RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
COPY certs/nginxbundle-dev.crt /etc/ssl/nginx.crt
COPY certs/private_key_bundle.key /etc/ssl/nginx.key

下面是nginx conf。

upstream backendservice {
  server 0.0.0.0:8080;
}

server {
  location / {
        proxy_pass http://backendservice;
    }

  listen 443 ssl;
  server_name *.xyz.com;
  client_max_body_size 100M;
  ssl_certificate /etc/ssl/nginx.crt;
  ssl_certificate_key /etc/ssl/nginx.key;
}

我认为我可以将所有3种环境的SSL / TLS证书添加到证书捆绑包/etc/ssl/nginx.crt中。但是我不确定private key是否可以进行类似的链接。对于这3个环境,我都有3个不同的私钥。

1 个答案:

答案 0 :(得分:0)

您不能这样做。 将证书链接到一个文件中意味着它应该提供第一个证书作为叶子证书,而另一个证书提供作为链证书,即它不会仅从文件中选择特定主机的证书。类似地,它将期望密钥文件中只有与叶子证书匹配的私钥作为第一个条目。它将忽略文件中的任何其他条目。