http被劫持了怎么办?安装Sectigo的ssl证书可以吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http被劫持了怎么办?安装Sectigo的ssl证书可以吗?相关的知识,希望对你有一定的参考价值。

安装sectigo的证书是可以有效防止http劫持的。

如果确认遭遇了HTTP劫持,可以向ISP(互联网服务提供商,即向广大用户综合提供互联网接入业务、信息业务、和增值业务的电信运营商)客服强烈投诉,来达到免于被劫持的目的。因为劫持技术本身设计中包括类似黑名单的功能,如果收到宽带用户的强烈反对,ISP会将该用户放入"黑名单"过滤掉,于是用户在短期内就不会遇到劫持的情况了。

同时,部署全站HTTPS加密是防止流量劫持最基础、最重要的安全防护措施!HTTPS在HTTP基础上加入SSL/TLS协议,对服务器与终端、服务器与服务器之间的传输数据进行加密,保护数据的机密性并验证数据的完整性。通过HTTPS加密连接传输的数据,流经运营商、路由器、WiFi等任意节点时都是密文,即使被劫持或窃取,没有私钥也无法解密,确保数据在传输过程中全程安全。SSL/TLS协议提供的身份认证机制,依靠SSL证书验证服务器身份真实性,确保数据传输到正确的通信方,防止虚假服务器钓鱼攻击,欺诈用户或窃取用户数据。全站部署HTTPS加密可以确保用户每一次连接、每一次访问都通过安全加密的方式进行,防止HTTP明文传输和局部HTTPS加密可能导致的安全风险。

参考技术A 安装SSL证书可以有效地防止网站劫持现象,但是不能杜绝网站劫持现象。不管是Sectigo证书还是其他品牌的证书都是如此。
我们来看一下SSL证书是如何防御网站流量劫持的?
HTTPS协议是用于解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证、数据的私密性保护以及对数据完整性的校验等功能。
因为SSL证书提供了对服务器的身份认证,所以DNS劫持导致连接错误服务器的情况将会被发现进而终止连接,最终导致DNS挟持攻击无法实现。此外对于数据劫持,SSL协议还提供数据的加密和完整性校验,这就解决了关键信息被嗅探以及数据内容被修改的可能。
参考技术B

可以。但目前Sectigo信任度较低,建议更换品牌。

解释原因:

    2020年起Sectigo根证书到期,导致CA机构更换根证书,信任度快速下降,导致很多古老的浏览器不信任。Sectigo目前EV或OV产品得到信任需要使用2010年根证书,但证书信任率降低到70%。

解决办法:更换其它品牌类型SSL证书。

Ghost+Nginx部署HTTP2

SPDY的时代就一直想要折腾下,主要是被运营商劫持的太恶心了。而避免被运营商劫持的最佳方案就是部署https。

SPDY还没有大规模使用,HTTP2就来了,于是就开始等nginx支持。

然后最近一直被热姐BS:你怎么还没有搞https啊?这个家伙无聊的搞了个网站叫https://youqu.us,用上了免费的国产SSL证书,于是各种得瑟~~

好吧,了解了下时机已经成熟,于是就开始部署。

SSL证书

SSL证书免费的收费的各种各样,看的头大,于是决定尝试使用Let's Encrypt的免费证书,最近很火的一些知名互联网企业包括google、mozilla、思科等联合支持的服务。昨天晚上申请,今天早上就通过了。

于是按照他们的介绍来自动化部署,开始还挺顺利的,到最后域名验证不通过。。。搜索了下是因为DNS的问题,我用DNSpod的服务,然后貌似hichina、cloudxns的DNS也都会有问题,换DNS的话。。。太麻烦,放弃。

既然部署https/2的目的就是防止被运营商劫持,那么买最便宜的comodo private SSL证书就够用了。

安装证书什么的很简单,网上一搜一大把,就不多介绍了。

Ghost

本身Ghost并不需要怎么配置的,因为我是用了Nginx做代理,所以只需要Nginx去监听443端口就可以了。

嗯,配置需要简单改一点,url那里加上urlssl就可以了:

...    production: {// url: 'http://www.qianduan.net',
        urlssl: 'https://www.qianduan.net',
...

Nginx

安装

之前主要是在等nginx支持http2,而之前的消息是nginx在年底前会支持到,其实在10月份的1.9.5版本就开始支持了,只不过是mainline版本,而不是stable版本。

只是,一般服务器系统安装的nginx都是stable版本(现在是1.8),那么要用到mainline版本就要自己编译一个,还是略麻烦的。Nginx也有介绍直接安装mainline版本的方法:http://nginx.org/en/linux_packages.html#distributions ,根据自己服务器按介绍来配置就好了。

配置

和http监听80端口相比,Nginx配置简单变了下,不麻烦,根据Ghost官方的方法配置就好了:

server{  
        listen 443 ssl http2;
        server_name www.qianduan.net;

        ssl on;

        charset utf-8;
        ssl_certificate        /path/to/your/domain.crt;
        ssl_certificate_key    /path/to/your/domain.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;


        location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   Host      $http_host;
                proxy_set_header X-Forwarded-Proto $scheme;

                proxy_pass         http://127.0.0.1:2368;
    }
}

注意,要用http2,在第二行ssl后面要添加进来,nginx不会默认使用http2的。

到此为止,主要的配置就完了。

分别重启下ghost和nginx:

嗯,https已经可以访问了,而且也已经有证书信息了。

等等,好像哪里不对?!

  1. connection信息第二项的锁形图标带感叹号?

这主要是因为页面里面有一些非HTTPS的mixed content:

Ghost+Nginx部署HTTP2

这样浏览器也会认为页面不是绝对安全的,chrome不允许mixed content执行,比如js,从截图可以看到,最下面的那条被block了,而图片等是可以显示的,只会有黄色的告警。而Safari却允许mixed的js执行,从而有可能被运营商利用来劫持iPhone用户(事实上运营商真的是这样干的!)

比较郁闷的是,普通的SSL证书是单域名的,也就是说,仅支持qianduan.net和www.qianduan.net,而不支持各种子域名——野卡(wildcard ssl)才支持子域名。而前端观察网站的大量图片是放在img.qianduan.net子域名上的。

最开始考虑用代理或者重定向来将请求变成https。后来和热姐讨论,感觉不行。。。

最后突然想到Ghost有导出和导入json的功能!于是后台导出所有数据为json文件,sublime批量替换img.qianduan.net//www.qianduan.net/img/ T T

然后nginx加一条规则alias img目录就好了。。。

location /img/ {  
    alias /path/to/img/;
}

搞定~~

HTTP跳转

剩下http访问时跳转的问题,有很多种方法,我的配置:

server {  
    listen       80;    server_name  qianduan.net www.qianduan.net;    return 301 https://www.qianduan.net$request_uri;
}

效果:

总结

整个过程其实没啥困难,主要是2点:1.证书;2.httpd软件支持。

具体访问速度,并没有感觉什么变化。

另外,大部分证书(SHA-2)不再支持 IE6 和android 2.3。商业用途时,还需要考虑证书的兼容性。


以上是关于http被劫持了怎么办?安装Sectigo的ssl证书可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

网站被劫持了,使用ssl证书可以解决吗?

发现网站长期被运营商劫持,我该上SSL证书嘛

Sectigo SSL证书市场占有率高的原因

发现网站长期被运营商劫持,我该上SSL证书嘛?

实现HTTPS,安装SSL证书真的能够保护网站不被劫持吗?

怎么才能防止SSL劫持