【发布时间】:2020-08-03 11:06:33
【问题描述】:
对于开发环境,我需要启用与 Nginx 容器的 SSL 连接。
我收到了一个从 Azure Key Vault 生成的证书,它采用 PFX 格式。
我一直在尝试在我的 nginx 容器中安装 opensll,并从 PFX 生成一个 crt 和密钥文件,但没有任何运气。
启用 HTTPS 连接到我的 NGINX 容器的最简单方法是什么?
这是我从现在开始的非工作 dockerfile。
FROM nginx:1.17.1-alpine
ARG CERT
RUN apk upgrade --update-cache --available && \
apk add openssl && \
rm -rf /var/cache/apk/*
RUN echo "$CERT"
RUN test -z "$CERT" || echo "$CERT" && echo "no certificates setup"
COPY cert.pfx /opt/certificate.pfx
RUN mkdir /etc/nginx/certs
RUN test -z "$CERT" || openssl pkcs12 -in /certificate.pfx -nocerts -out /etc/nginx/certs/cert.key -password pass:FakePassword && :
RUN test -z "$CERT" || openssl pkcs12 -in /certificate.pfx -clcerts -nokeys -out /etc/nginx/certs/cert.crt -password pass:FakePassword && :
RUN test -z "$CERT" || echo $'server { \n\
\tlisten 443 ssl; \n\
\tserver_name www.yoursite.com; \n\
\tssl_certificate /etc/nginx/certs/cert.crt; \n\
\tssl_certificate_key /etc/nginx/certs/cert.key; \n\
\tlocation / { \n\
\t\tproxy_pass http://frontend:5000/; \n\
\t\terror_log /var/log/front_end_errors.log; \n\
\t} \n\
}' >> /etc/nginx/conf.d/nginx.conf
EXPOSE 80 443
COPY --from=build /app/dist /usr/share/nginx/html/
我的错误是:
Step 18/25 : RUN if [ "x$CERT" = "x" ] ; then : ; else openssl pkcs12 -in /opt/certificate.pfx -nocerts -out /etc/nginx/certs/cert.key ; fi
---> Running in f5d8b255e51c
Enter Import Password:
Can't read Password
The command '/bin/sh -c if [ "x$CERT" = "x" ] ; then : ; else openssl pkcs12 -in /opt/certificate.pfx -nocerts -out /etc/nginx/certs/cert.key ; fi' returned a non-zero code: 1
【问题讨论】:
-
我认为 openssl 期望用户输入密码。由于它在构建 docker 映像时无法工作,因此您可以使用 -password stdin 从标准输入管道输入密码(检查此以获取更多选项:stackoverflow.com/questions/27022180/…)
标签: azure docker nginx ssl-certificate