nginx 配置https证书认证
一、什么是SSL证书
SL证书全程:SSL安全通道(Secure socket layer(SSL)。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA(如VeriSign),在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
TLS版本号以及相关说明
安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。
二、配置服务器
1、获取证书
通过证书颁发机构获取,也就是找卖证书的就可以了
2、安装服务器证书
将证书文件,上传至Nginx安装目录的conf目录下,我的安装目录是
/usr/local/nginx/conf/
为了方便管理证书我在conf目录下创建了证书的统一管理目录https_ssl目录,我将所有证书
存放在了conf/https_ssl/下。
同时为了证书的可识别性,可以为证书改名
mv server.key aaaaaa.key
mv server.pem aaaaaa.pem
Nginx虚拟主机配置
server {
listen 443; #修改端口号为443,如果有防火墙记得开启防火墙
server_name aaaaaaa; #域名我隐藏了,不要在意aaaaaa
root /data/www/www.test.com;
index index.php index.html index.htm;
access_log /data/wwwlogs/rewrite.log access;
ssl on; #SSL功能开启,采用SSL通信协议
ssl_certificate https_ssl/server.pem; #证书文件
ssl_certificate_key https_ssl/server.key; #私钥文件
ssl_session_timeout 5m; 客户端可以重用会话缓存中ssl参数的过期时间,内网系统默认5分钟太短了,可以设成30m即30分钟甚至4h
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #支持的SSL协议标准
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; 选择加密套件
ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件
location ~ \\.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
}
测试访问,https:aaaaa 可以看到有绿色的锁,说明已经配置成功了,根据浏览器的查看证书的方式
也不同,我使用的是火狐
在实际使用中https比http的访问方式,开销要大