HTPPS和HTTP的概念
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
Http访问时,浏览器会报‘不安全’提示,十分不友好。
步骤
-
申请SSL证书,我是在阿里申请的免费证书。点我申请
-
下载证书,解压,会得到一个key和pem文件
-
上传证书到nginx安装目录,修改nginx.conf配置文件,并重启
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate ‘pem文件路径’;
ssl_certificate_key ‘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;
}
> 重启如果报错:nginx: [emerg] unknown directive "ssl"则说明在安装nginx时,没有安装SSL模块。
1、进入nginx解压目录,运行 ./configure --with-http_ssl_module //重新添加这个ssl模块
2、make,但不要make install,否则nginx目录会被覆盖。
3、make完会在objs目录下生成新的nginx文件,替换掉正式的nginx文件即可
-
nginx重启后就可以通过https访问了。
Https默认443端口,Http默认80端口,这点需要区分开。
-
如果希望访问http时能自动跳转到https,只要在nginx.conf下的server 80配置下稍作修改即可。
rewrite ^(.*)$ https://$host$1 permanent;