为网站配置SSL证书,以获取HTTPS访问
脚本
Nginx配置证书其实并不难,获取证书还比较麻烦一点。
域名的服务提供商,如阿里腾讯等,通常会有傻瓜式的SSL证书申请方案,依然是需要准备身份证号和手机验证即可申请。
由于Nginx在代理转发领域的的统治性地位,以下主要记录如何通过Nginx使用SSL证书来达到Https协议访问Web服务的目的。
SSL证书长什么样子
SSL证书有两个文件,文件名叫什么无所谓,扩展名分别为pem和key,这两个文件和ssh的id_rsa类似,毕竟都是使用的rsa算法。
key文件的结构是
1 2 3
| -----BEGIN RSA PRIVATE KEY----- ...... -----END RSA PRIVATE KEY-----
|
pem文件的结构是
1 2 3 4 5 6
| -----BEGIN CERTIFICATE----- ...... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...... -----END CERTIFICATE-----
|
SSL证书放在哪
推荐放在Nginx目录中,在ubuntu中,Nginx的目录在/etc/nginx
,我创建了一个/etc/nginx/cert
目录来存放这两个文件
Nginx配置
http仅需指定端口即可https有一些ssl的配置是必须的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| server { server_name www.hxygmy.site
listen 443 ssl listen [::]:443 ssl ssl_certificate /etc/nginx/cert/xxx.pem ssl_certificate_key /etc/nginx/cert/xxx.key ssl_session_timeout 5m ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL ssl_protocols TLSv1.1 TLSv1.2 ssl_prefer_server_ciphers on location / { proxy_pass http://192.168.31.154:4000/ proxy_set_header Host $host:$server_port proxy_set_header X-Real-IP $remote_addr proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for proxy_set_header X-Forwarded-Proto $scheme }
}
|