一:什么是Https
SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。
SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。
提示:SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“https://网站域名”。
二:Https的Nginx环境搭建
使用阿里云的证书服务,阿里云-控制台-安全(云盾)-证书服务,购买证书,选择免费型DV SSL,补全证书,证书状态变成已签发后,点击下载,下载证书for Nginx,在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。
不建议直接修改nginx.conf文件,建议在sites-available目录下创建一个Http协议配置文件和一个Https协议配置文件,然后在sites-enabled目录下创建前两个文件的链接文件,然后直接编辑这两个链接文件。
Http协议配置文件(80端口301跳转)
server {
listen 80;
server_name 网站域名;
return 301 https://网站域名;
}
Https协议配置文件
server {
listen 443;
root /var/www/项目名称/public;
index index.php index.html index.htm;
server_name 网站域名;
ssl on;
ssl_certificate cert/pem文件;
ssl_certificate_key cert/key文件;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass 127.0.0.1:9000;
}
}
重启Nginx
service nginx restart