前言
上篇文章介绍了https的工作原理,这篇文章介给如何让自己的网站支持https,相比理论知识实践起来简单的多,只需申请安装证书再配置下服务器即可。
环境
- Centos7.6(腾讯云服务器)
- Nginx
申请证书
SSL证书分为三种认证级别:
-
域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。
-
公司认证(Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。
-
扩展认证(Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。
因为我的域名云服务器都是在腾讯云买的所以也在腾讯云申请SSL证书,打开腾讯云SSL证书控制台申请免费的DV域名认证证书:
域名这一栏填你网站的域名,一张证书只能对应一个域名,如果你的API接口(api.xxxxx.xxx)也要接入HTTPS的话还需要再申请一张证书。
安装证书
将下载来的证书压缩文件解压:
我使用的http服务器是Nginx,所以将nginx文件夹中的两个文件通过FTP工具复制到服务器的任意位置(记住路径)。
接下来找到你的nginx配置文件,我的nginx配置文件在 /etc/nginx/nginx.conf
你的路径可能根我不一样但都是 nginx.conf
这个文件。
执行vim nginx.conf 修改这个文件, 在http块中添加这一段:
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name *.liaowei.info;
ssl_certificate "/xxxx/xxxxx/1_liaowei.info_bundle.crt";
ssl_certificate_key "/xxxx/xxxxx/2_liaowei.info.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:5252;
}
}
-
第2行监听了 443 端口, https默认监听的是443端口,http默认监听的是80端口,比如在浏览地址栏输入 https://xxxxx.xx 最终会解析成域名邦定的ip后面跟上443端口号,要是输入的是 http 开头的解析后的ip后面会跟上80端口。
-
第6行跟第是行是你刚才证书文件存放的路径。
-
第14行表示将这个请求代理到你本地起的一个服务中。
好了,至此你的网站就可以通过https防问了,浏览器地直栏也会带上一把锁:
全部替换
如果你的网站是通过https防问的,但你的页面引用了http开头资源(如http开头的图片,http开头的API),那么这些资源可能会防问不了,会报如下错误:
解决办法是让这些静态资源全部支持https,如果已经支持了那好办,只需要把所有的http替换成https即可,页面太多替换起来太麻烦? 没问题只需在页面的head中加入:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
意思是浏览器会自动帮你替换成https的前缀,前提是你的资源服务器要支持https。
完!
上篇文章: 接入https(理论篇)