码迷,mamicode.com
首页 > Web开发 > 详细

【倒腾HTTPS】Nginx for Docker自签名SSL证书

时间:2019-11-14 18:14:43      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:rsa   key   mamicode   cti   private   免费   nod   结构   导出   

前言  

       合格的web程序员, 必须能自由在 IIS、 Nginx、 Nginx for Docker上配置Https服务, 博客最近将专题记录

  • Https  &   Hsts

  • 如何申请适用于生产的免费 SSL证书

  • 如何在生产IIS配置Https服务

本博客小试牛刀,先实操在Nginx for Docker上添加自签名SSL证书

为啥先倒腾自签名SSL证书,申请公网SSL证书需要公网可识别的域名或者公网IP;

如果有实际SSL证书, 按照本文替换即可。

前置准备

 >   CentOS机器上安装Docker、 Docker-Compose

 >    常规操作构建 Nginx for Docker网站, 项目结构如下: 

ssl-docker-nginx
    ├── docker-compose.yml
    ├── nginx   
    │      └── nginx.conf
    └── site
           └── index.html

    该项目将会使用  nginx/nginx.conf、site/index.html替换Nginx镜像默认配置文件和默认启动页,docker-compose.yml 如下:

version: 2
services:
  server:
    image: nginx:latest
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./site:/usr/share/nginx/html
      - ./nginx/my-site.com.crt:/etc/nginx/my-site.com.crt # New Line!
      - ./nginx/my-site.com.key:/etc/nginx/my-site.com.key
    ports:
    - "8080:80"
    - "443:443"

    docker-compose  up -d 启动Nginx容器,还是那样熟悉的味道: 【chrome 浏览器默认将 http请求识别为不安全】

技术图片

为Nginx for Docker添加SSL自签名证书

 ① 创建自签名证书 (什么叫自签名,就是自己给自己颁发 SSL证书)

[nodotnet@gs-server-5809 ssl-docker-nginx]$ openssl req -newkey rsa:2048 -nodes -keyout nginx/my-site.com.key -x509 -days 365 -out nginx/my-site.com.crt

req是证书请求的子命令,-newkey rsa:2048 -keyout private_key.pem 表示生成私钥(PKCS8格式),

                                       -nodes 表示私钥不加密,若不带参数将提示输入密码;

           -x509表示输出证书,-days365 为有效期,此后根据提示输入证书拥有者信息;

       之后会在nginx目录下生产2个文件, 分别是私钥、证书

 ② 将证书和密钥挂载到Nginx Image, 修改docker-compose.yml

version: 2
services:
  server:
    image: nginx:latest
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./site:/usr/share/nginx/html
      - ./nginx/my-site.com.crt:/etc/nginx/my-site.com.crt    #新行
      - ./nginx/my-site.com.key:/etc/nginx/my-site.com.key    #新行
    ports:
    - "8080:80"
    - "443:443"        // 容器开启HTTPS默认的443端口

 ③ 为Nginx配置 接受Https请求, 修改nginx/nginx.conf

events {
  worker_connections  4096;  ## Default: 1024
}

http {
    server {
        listen 80;
        root         /usr/share/nginx/html/;
    }

    server {      # 新Server接受来自443端口的Https请求
        listen              443 ssl;
        ssl_certificate     /etc/nginx/my-site.com.crt;
        ssl_certificate_key /etc/nginx/my-site.com.key;
        root        /usr/share/nginx/html;
    }
}

执行docker-compose down && docker-compose up -d: 已经发起https://10.201.80.126:443 请求,当前自签名证书颁发机构不在浏览器内置的CA机构,所以该证书目前被浏览器认为是无效。

技术图片

理论上将 该自签名证书导出,之后在 【chrome浏览器】-【高级设置】-【管理证书】中导入该证书,即可让 chrome接受自签名SSL证书。

That‘s All,  Https作为以后web的主流配置, 开发者必须掌握;后续会记录Https & HSTS, 申请免费SSL证书,尽请关注。

 

【倒腾HTTPS】Nginx for Docker自签名SSL证书

标签:rsa   key   mamicode   cti   private   免费   nod   结构   导出   

原文地址:https://www.cnblogs.com/JulianHuang/p/11858800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!