ame

https折腾记录
关于https 使用 HTTPS 前的一些疑惑 我的网站(一个简单的博客)可能没必要使用 HTTPS 每个网...
扫描右侧二维码阅读全文
10
2018/04

https折腾记录

关于https

使用 HTTPS 前的一些疑惑

  • 我的网站(一个简单的博客)可能没必要使用 HTTPS

每个网站都应该用 HTTPS,就算是全静态站点也同样如此,运营商劫持严重干扰访问者的体验

  • HTTPS 会不会让网站速度变慢?

有几项技术可以提高 HTTPS 的性能,包括 Strict Transport Security,TLS False Start 和 HTTP/2 ,这些技术让 HTTPS 速度不慢,某些情况下会甚至更快

  • HTTPS 需要花钱吧?证书好像不便宜

HTTPS 针对个人单个(或者几个)域名的使用来说,已经是免费的

  • 配置和维护 HTTPS 代价很高

配置和维护 HTTPS 异常简单,Let's Encrypt 这个项目通过自动化把事情简单化了

具体步骤

  1. 获取,安装SSL证书
  2. 监听443端口
  3. 重定向http到https

SSL证书

HTTPS 证书分为3类,

  • DV 域名验证证书
  • OV 组织机构验证证书
  • EV 增强的组织机构验证证书。

每类证书在审核和验证方面要求严格程度不同,浏览器会在地址栏给予不同证书不一样的展现。

一般个人使用DV证书完全够了,浏览器表现为地址栏前会有绿色的小锁。

有哪些靠谱的免费 HTTPS 证书提供商

Let's Encrypt

https://letsencrypt.org

Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS。

StartSSL

https://www.startcomca.com

StartSSL是StartCom公司旗下的SSL证书,应该算是免费SSL证书中的“鼻祖”,最早提供完全免费的SSL证书并且被各大浏览器所支持的恐怕就只有StartSSL证书了。任何个人都可以从StartSSL中申请到免费一年的SSL证书。

CloudFlare SSL

https://www.cloudflare.com/ssl/

CloudFlare提供的免费SSL证书是UniversalSSL,即通用SSL,用户无需向证书发放机构申请和配置证书就可以使用的SSL证书,CloudFlare向所有用户(包括免费用户)提供SSL加密功能。

获取证书

这里以FreeSSL.org为例

FreeSSL.org 是一个提供免费HTTPS证书申请的网站

FreeSSL01.jpg
输入自己的域名,Let's Encrypt V2 支持通配符.
FreeSSL02.jpg
然后要进行DNS验证,证明域名所有权.
domain.jpg
添加个TXT记录,如果有多个域名要多次添加

验证后下载证书,上传到VPS任意位置

配置Nginx

可以参考:
https://mozilla.github.io/server-side-tls/ssl-config-generator/

监听443端口

然后编辑Nginx的配置文件,添加

 listen 443; ##改成443

 ssl on;
 ssl_certificate  /home/cert/full_chain.pem; ##改成你的位置
 ssl_certificate_key /home/cert/private.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;

80端口重定向

server {
    listen 80;
    server_name blog.abyss.moe; ###改成你的域名
    return 301 https://$host$request_uri;
}

处理http资源

211107536449320.png

HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,所以在 HTTPS 承载的页面上不允许出现 http 请求,一旦出现就是提示或报错

好在 W3C 工作组考虑到了我们升级 HTTPS 的艰难,在 2015 年 4 月份就出了一个 Upgrade Insecure Requests 的草案,他的作用就是让浏览器自动升级请求。

我们的页面是 https 的,而这个页面中包含了大量的 http 资源(图片、iframe等),页面一旦发现存在上述响应头,会在加载 http 资源时自动替换成 https 请求。

在页面添加meta头

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />

参考文章:
https://www.cnblogs.com/hustskyking/p/upgrade-insecure-requests.html
https://ksmx.me/letsencrypt-ssl-https/
https://blog.csdn.net/ithomer/article/details/78075006

Last modification:April 10th, 2018 at 01:42 pm

Leave a Comment