Nginx配置SSL证书

一、部署

启动容器

docker run -d -p 80:80 -p 443:443 -v /root/docker/nginx/html:/usr/share/nginx/html  -v /root/docker/nginx/nginx.conf:/etc/nginx/nginx.conf  -v /root/docker/nginx/conf.d:/etc/nginx/conf.d -v /root/docker/nginx/nginx:/var/log/nginx --name nginx nginx


二、腾讯云SSL证书部署

申请证书后,从网站下载证书,解压。如下是腾讯云的SSL证书的目录结构。

chenjie.asia
│   chenjie.asia.csr
│   chenjie.asia.key  
│   chenjie.asia.pem
└───Apache
│   │   1_root_bundle.crt
│   │   2_chenjie.asia.crt
│   │   3_chenjie.asia.key
│   
└───IIS
│   │   chenjie.asia.pfx
│   │   keystorePass.txt
│
└───Nginx
│   │   1_chenjie.asia_bundle.crt
│   │   2_chenjie.asia.key
│
└───Tomcat
│   │   chenjie.asia.jks
│   │   keystorePass.txt

因为我们使用的是Nginx,所以将Nginx下的1_chenjie.asia_bundle.crt和2_chenjie.asia.key文件复制到/root/docker/nginx/conf.d/cert目录下,因为数据卷映射关系,证书会被映射到容器中,路径为/etc/nginx/conf.d/cert/。

然后配置default.conf文件,配置如下:

server {
    listen  80;
    #SSL 访问端口号为 443
    listen 443 ssl; 
    #填写绑定证书的域名
    server_name cloud.tencent.com; 
    #证书文件名称
    ssl_certificate /etc/nginx/conf.d/cert/1_chenjie.asia_bundle.crt;
    #私钥文件名称
    ssl_certificate_key /etc/nginx/conf.d/cert/2_chenjie.asia.key;

    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;

    charset utf-8;
    access_log  /var/log/nginx/access.log  main;
    error_log /var/log/nginx/access.err;

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

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

Nginx 版本为 nginx/1.15.0 以上请使用 listen 443 ssl 代替 listen 443 和 ssl on。

配置完成后重启nginx容器,或进入容器执行/usr/sbin/nginx -s reload

访问http://chenjie.asia/https://chenjie.asia/
都能成功。


三、自建SSL证书并部署

制作密钥

openssl genrsa -out chenjie.key 2048

制作证书

 openssl req -new -x509 -days 365 -key test.key -out chenjie.crt

获取到密钥和证书。

步骤同上,将chenjie.key和chenjie.crt放到/root/docker/nginx/conf.d/ssl目录下。
然后配置default.conf文件:

server {
    listen  80;
    #SSL 访问端口号为 443
    listen 443 ssl; 
    #填写绑定证书的域名
    server_name cloud.tencent.com; 
    #证书文件名称
#    ssl_certificate /etc/nginx/conf.d/cert/1_chenjie.asia_bundle.crt;
    #私钥文件名称
#    ssl_certificate_key /etc/nginx/conf.d/cert/2_chenjie.asia.key;
    ssl_certificate /etc/nginx/conf.d/ssl/chenjie.crt;
    ssl_certificate_key /etc/nginx/conf.d/ssl/chenjie.key;


    ssl_session_timeout 5m;
    #请按照以下协议配置
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;

    charset utf-8;
    access_log  /var/log/nginx/access.log  main;
    error_log /var/log/nginx/access.err;

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

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

重启nginx,访问https时会提示证书不受信任。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 1. 背景谷歌从 2017 年起,Chrome 浏览器将也会把采用 HTTP 协议的网站标记为「不安全」网站;苹果...
    霄峰阅读 3,890评论 0 2
  • 1. 去阿里云或者腾讯云申请免费的ssl证书,这里以阿里云为例。成功以后获得两个文件以.key和.pem结尾的文件...
    亦亦嘟嘟阅读 489评论 0 0
  • 大致与这篇博文[https://www.cnblogs.com/zhoudawei/p/9257276.html]...
    Lan_de阅读 181评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,606评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,231评论 4 8