一、HTTP、HTTPS是什么?
通俗点讲HTTP是服务器与浏览器之间传输信息的一种协议,HTTPS也是传输信息的协议,只不过使用SSL/TLS进行加密数据包,通过加密之后的数据包进行传输,所以更安全,对服务器端,对用户端加了一层防护,另外如果不对网站做SSL证书部署,会影响搜索引擎的检索。一般来说,在服务器要同时开启80端口,以及443端口,如果不放行端口号的话会影响到站点访问,这是一开始部署时需要做的基本工作。
- HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
- HTTPS 默认工作在 TCP 协议443端口,用户访问网站 https:// 打头的都是标准 HTTPS 服务。
下面两个图片对比,HTTP和HTTPS在浏览器的显示。
HTTP
HTTPS
二、SSL证书如何获取
这里的SSL一般在主机服务商进行获取,这里我选择的是阿里云,进入阿里云控制台,搜索SSL证书(应用安全),直接申请DigiCert版的SSL证书按照要求填写信息即可申请,一般几分钟就可以签发证书。
签发SSL证书流程
SSL证书申请流程
签发成功后需要下载在证书的key和pem,保存在主机上,然后使用SCP命令上传到服务器的Nginx目录下。
这里进入Nginx根目录下,如果不知道你的nginx放在哪里,直接使用nginx -t
,当出现OK,Success字样说明nginx服务处于开启状态。前面的路径就是你的nginx.conf
配置文件。
[root@VM-0-10-centos ~]# cd /usr/local/nginx/conf/
[root@VM-0-10-centos conf]# ls -l
[root@VM-0-10-centos conf]# vi nginx.conf
这里需要在server字段中加入80端口,443端口,分别使用301转发,使http转换到https,当然除了使用301转发,还可以使用强制转换。rewrite ^(.*) https://$host$1 permanent;
对应第三个server字段中的证书,要按照路径严格填写,要不然没有效果,主要几个地方按照我的配置文件进行配置即可。
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://www.yourdomain.com$request_uri;
}
server{
listen 443;
server_name yourdomain.com;
return 301 https://www.yourdomain.com$request_uri;
}
server
{
## listen 80 default_server reuseport;
#listen [::]:80 default_server ipv6only=on;
## listen 80;
listen 443 default_server ssl;
#填写绑定证书的域名
server_name www.yourdomain.com;
##rewrite ^(.*) https://$host$1 permanent;
##上面注掉 以及 rewrite整句话。
ssl on;
#证书文件名称
ssl_certificate /usr/local/nginx/conf/5188481_www.yourdomain.com.pem;
#私钥文件名称
ssl_certificate_key /usr/local/nginx/conf/5188481_www.yourdomain.com.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
三、测试
在网站后台将所有的访问地址改成https://
的格式,在浏览器中输入http://www.yourdomai.com
,看是否跳转到了https://www.yourdomain.com
,如果没有请检查是否配置成功,如果成功跳转那么就代表成功部署证书。
请登录后查看评论内容