背景
最近在弄自己的个人网站,顺便也让网站支持了一波 https 访问。当你在 Chrome 浏览器访问一些网站时,发现网站在网址左侧都有一个🔐的图标,点击显示当前连接是安全的。转身看看自己的网站,发现一个感叹号,并且友情提示连接不安全,可能会受到攻击。这不能忍!!!
近几年,Google 越来越重视 Web 站点的安全性,并一直大力推广网站采用 https 协议,并通过改变 Chrome用户界面来引导用户,让用户明白采用HTTPS 协议的网站比采用 http 协议的网站更安全可靠,那我们就响应改变
获取证书
我申请的是 腾讯云 上的免费版 DVSSl 证书,申请审核通过后可以对证书进行下载,有效期是1年。如果自己弄嫌麻烦可以在上面申请(审核一般很快)
注意:由于CA机构和证书代理商策略调整,从2018年1月1日起,同一主域最多只能申请20张亚洲诚信品牌免费型DV版SSL证书
下载的文件中分别有 Apache、IIS、Nginx和 Tomcat 版本的证书,这里只介绍 Nginx 如何配置
配置证书
如果没有安装需要先安装 Nginx ,我们只需配置 Nginx,使其支持 https 即443端口的访问
编辑 /etc/nginx/nginx.conf配置文件,当然路径可能不一样,只要能编辑到nginx.conf文件就行
nginx.conf 文件中一般默认已经有80端口的配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
...
}
}
加上https 443端口 的配置:
# Settings for a TLS enabled server.
#
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
ssl_certificate "/etc/pki/nginx/server.crt";
ssl_certificate_key "/etc/pki/nginx/private/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
...
}
}
ssl_certificate 字段是证书路径,ssl_certificate_key是私钥路径。将我们之前下载的证书和私钥文件配置到对应路径。
重启 Nginx
修改了 nginx.conf 后别忘了重新 reload Nginx 使其生效
$ nginx -s reload
查看效果
将请求地址从 http://xxx 替换为 https://xxx ,如果可正常访问说明配置成功,浏览器请求地址旁边的标识,已经变成了一个🔐的图标
其它
如果发现图标还是一个感叹号,标记为连接不安全,这是因为网站中存在 http 的资源,只要将所有 http 资源替换就好了