一、部署
啟動容器
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證書部署
申請證書后,從網(wǎng)站下載證書,解壓。如下是騰訊云的SSL證書的目錄結(jié)構(gòu)。
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
因?yàn)槲覀兪褂玫氖荖ginx,所以將Nginx下的1_chenjie.asia_bundle.crt和2_chenjie.asia.key文件復(fù)制到/root/docker/nginx/conf.d/cert目錄下,因?yàn)閿?shù)據(jù)卷映射關(guān)系,證書會被映射到容器中,路徑為/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;
#請按照以下協(xié)議配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#請按照以下套件配置,配置加密套件,寫法遵循 openssl 標(biāo)準(zhǔn)。
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容器,或進(jìn)入容器執(zhí)行/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;
#請按照以下協(xié)議配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#請按照以下套件配置,配置加密套件,寫法遵循 openssl 標(biāo)準(zhǔn)。
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時會提示證書不受信任。