合格的web程序員, 必須能自由在 IIS、 Nginx、或原生web服務器上配置Https, 博客最近將專題記錄html
Https & Hstsnode
如何申請適用於生產的免費 SSL證書nginx
如何在生產IIS配置Https程序員
本博客小試牛刀,先實操在Nginx for Docker上添加自簽名SSL證書web
爲啥先倒騰自簽名SSL證書,申請公網SSL證書須要公網可識別的域名或者公網IP;chrome
若是有實際SSL證書, 按照本文替換便可。docker
長話短說: 目前常見的Http請求明文傳輸, 報文可被截取篡改,請求可被僞造; 瀏覽器
所以基於當前HTTP(HTTP-TCP-IP)協議棧引入 SSL or TSL(Transport Secure Layer) ,HTTPS在進行加密傳輸以前會進行一次握手,肯定傳輸密鑰。安全
> 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 ports: - "8080:80"
docker-compose up -d 啓動Nginx容器,仍是那樣熟悉的味道: 【chrome 瀏覽器默認將http請求識別爲不安全】
很明顯: web服務器須要存儲證書(內置了公鑰)和私鑰
① 建立自簽名證書 (什麼叫自簽名,就是本身給本身頒發 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 nginx/my-site.com.key表示生成私鑰(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證書,盡請關注。