nginx 1.18配置有chain中间证书的ssl服务

由于nginx早期版本有安全问题,需要升级版本。于是nginx升级成了docker,顺便上了ssl证书,记录一下操作过程。

一,证书合并

一般nginx的ssl证书,包含有一个key私钥文件,一个crt公钥证书文件。如果有chain.crt中间证书文件,可以将这个中间证书的内容cp出来,放到公钥crt的后面即可。

中间证书的作用,参考url:https://www.myssl.cn/home/article-0403-22.html
为了保证Nginx可以兼容所有浏览器,我们必须在服务器上安装中间证书,请到 中间证书下载工具,输入您的Server.crt,然后下载中间证书,请将中间证书保存为Chain.crt。

我们需要将中间证书Chain.crt加入到服务器证书Server.crt文件中,请将Chain.crt中的所有内容复制,并粘贴到Server.crt,顺序是: 第一段,服务器证书;第二段,中间证书,如下:

-----BEGIN CERTIFICATE-----
MIIEsTCCA5mgAwIBAgIDBfoqMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNVBAYTAlVT
………Server Certificate…………
T0hUGo/wiwTBUafyk1A+LlSUE+dYqzbHYV9Q4d83UIzz9vXO4wmSRgV0udjGN2GR
W7oiGmI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEsTCCA5mgAwIBAgIDBfoqMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNVBAYTAlVT
………Chain Certificate…………
T0hUGo/wiwTBUafyk1A+LlSUE+dYqzbHYV9Q4d83UIzz9vXO4wmSRgV0udjGN2GR
W7oiGmI=
-----END CERTIFICATE-----

二,nginx conf更新

在想启用ssl的server段,加上如下配置,实现https访问,并自动从80端口跳转。

        listen       80;
        listen       443 ssl;
        server_name  do.it.com.cn;

        ssl_certificate      /etc/nginx/conf.d/it.com.cn.crt;
        ssl_certificate_key  /etc/nginx/conf.d/it.com.cn.key;
        ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers          ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers  on;

        if ($server_port = 80) {
                rewrite ^(.*)$ https://$host$1 permanent;
        }
        root /usr/share/nginx/html;

三,Dockerfile生成

如果nginx是作为后端代理用途,nginx的所有东东,最好固定无变化,保证性能和稳定性。(那两个证书文件copy的位置,要契合nginx.conf中配置的定位)

FROM it.com.cn/base/middleware/nginx:1.18-alpine

MAINTAINER 'It'
LABEL version="1.0"

COPY conf/nginx.conf /etc/nginx/
COPY conf/it.conf /etc/nginx/conf.d/
COPY conf/notice.conf /etc/nginx/conf.d/
COPY conf/jenkins.conf /etc/nginx/conf.d/
COPY ssl/it.com.cn.key /etc/nginx/conf.d/
COPY ssl/it.com.cn.crt /etc/nginx/conf.d/
COPY html  /usr/share/nginx/html

RUN rm -rf /etc/nginx/conf.d/default.conf \
    && chmod -R 755 /usr/share/nginx/html \
    && echo "finished."

四,启动命令

方便日常维护

#/bin/sh
docker run -itd \
  --name do-it \
  -p 80:80  -p 443:443 \
  it.com.cn/it/https-do-it:nginx-1.18-alpine

五,测试

略。。。

你可能感兴趣的:(nginx 1.18配置有chain中间证书的ssl服务)