117-为Nginx配置 SSL 证书 + 搭建 HTTPS网站
1. 背景
谷歌从 2017 年起,Chrome 浏览器将也会把采用 HTTP 协议的网站标记为「不安全」网站;苹果从 2017 年 iOS App 将强制使用 HTTPS;在国内热火朝天的小程序也要求必须使用 HTTPS 请求。
2. SSL证书类型
通常来说,SSL 证书分为三大类,他们的安全性是递增的,当然价格和安全系数成正比。
DV (Domain Validation Certificate) DV 证书适合个人网站使用,申请证书时,CA 只验证域名信息。几分钟之内就能签发。
OV ( Organization Validation Certificate) OV 证书需要认证公司的信息。1-2天签发。
EV ( Extended Validation Certificate) EV 证书的认证最为严格,一般会要求提供纸质材料。签发时间也较久。
这里推荐去[七牛]申请免费SSL证书这里是申请地址
完成后将证书和key内容复制出来!如图:
cert.png
然后(如果文件、目录不存在要自行创建):
将第一部分内容复制到/var/cert/yunfeng365.crt
文件中!
将第二部分内容复制到/var/cert/yunfeng365.key
文件中!
为了确保更强的安全性,我们可以采取迪菲-赫尔曼密钥交换
进入/var/cert/
目录并生成一个yunfeng365.pem
cd /var/cert/
openssl dhparam -out yunfeng365.pem 2048 # 如果你的机器性能足够强大,可以用 4096 位加密
生成完毕后,进行Nginx 配置!
在nginx配置文件目录中(/etc/nginx/sites-available
)新增文件:
yunfeng365.com
https.yunfeng365.com
yunfeng365.com
配置80端口301跳转
server {
listen 80 default_server;
# Make site accessible from http://localhost/
server_name yunfeng365.com;
server_name www.yunfeng365.com;
return 301 https://www.yunfeng365.com$request_uri;
}
https.yunfeng365.com
配置ssl
server {
listen 443 ssl;
root /var/www/blog/public;
index index.php index.html index.htm;
# Make site accessible from http://localhost/
server_name yunfeng365.com;
server_name www.yunfeng365.com;
# ssh配置
ssl on;
ssl_certificate /var/cert/yunfeng365.crt;
ssl_dhparam /var/cert/yunfeng365.pem;
ssl_certificate_key /var/cert/yunfeng365.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# php配置
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
配置完成后,执行以下命令创建软链接使配置加载:
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/https.yunfeng365.com
ln -s /etc/nginx/sites-available/yunfeng365.com
如遇权限问题请使用sudo
!
重启Nginx使配置生效!
service nginx restart