如何向 Docker 容器内的 nginx 添加 SSL 证书?

如何向 Docker 容器内的 nginx 添加 SSL 证书?

我正在尝试在我的服务器上配置 SSL 但似乎有些地方出错了。

我已经在 1&1 上购买了 SSL 证书,他们给了我:

  • 中级 SSL 证书
  • 我的私钥
  • 另一个 SSL 证书(我猜是普通证书?)

网上的指南提到将它们捆绑在一起 - 这是正确的吗?

我的 nginx 和 Dockerfile 如下。我-v在运行 docker 时使用命令将我的 Linux 文件映射到容器,但我认为最好将文件复制到我的 Dockerfile 中?

这是我的 nginx 文件:

server {
    listen       80;

    listen 443 ssl;

    server_name server_name.com;
    ssl_certificate /etc/ssl/private/ssl-bundle.crt;
    ssl_certificate_key /etc/ssl/private/ssl.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri /index.html;
    }
}

Dockerfile:

# build environment
FROM node:9.6.1 as builder
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN npm install --silent
RUN npm install [email protected] -g --silent
COPY . /usr/src/app
RUN npm run build

# production environment
FROM nginx:1.13.9-alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /usr/src/app/client/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

答案1

将配置文件添加到 Dockerfile 并不符合 Docker 的最佳实践。

您的图像应具有通用性,可重复使用。稍后,您可能会乐意将其与其他证书文件一起按原样重复使用。

因此,绑定挂载配置比将配置文件放入docker镜像是更好的选择。

关于您的证书,只需将中间证书(应该是来自 1&1 的认证机构)和其他 SSL 证书(应该是您的服务器证书)连接到文件 ssl-bundle.crt 中。并将私钥放在 ssl.key 文件中。

我还建议您解释一下哪些地方不起作用,提供一些日志或错误消息,以及您用来生成和测试 Docker 容器的命令。

相关内容