接入Https(实践篇)

前言

上篇文章介绍了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(理论篇)

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注