HTTPS-加密SSL证书

从第一部分HTTP工做原理中,咱们能够了解到HTTPS核心的一个部分是数据传输以前的握手,握手过程当中肯定了数据加密的密码。在握手过程当中,网站会向浏览器发送SSL证书,SSL证书和咱们平常用的身份证相似,是一个支持HTTPS网站的身份证实,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,因为公钥加密的密码只能被在申请证书时生成的私钥解密,所以浏览器在生成密码以前须要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,若是验证失败浏览器会给出证书错误的提示。在这一部分我将对SSL证书的验证过程以及我的用户在访问HTTPS网站时,对SSL证书的使用须要注意哪些安全方面的问题进行描述。html

小提示:文章比较长,若是你对SSL证书究竟是怎么一回事,以及SSL欺骗的原理没有兴趣能够跳过前面的部分,可是但愿你能看一下“3、证书的验证过程”中的那些图片,知道浏览器会在什么状况下提示SSL证书错误;再看一下文章结尾处的3条总结,基本上就能够知道如何安全的使用HTTPS了。

1、证书的类型

实际上,咱们使用的证书分不少种类型,SSL证书只是其中的一种。证书的格式是由X.509标准定义。SSL证书负责传输公钥,是一种PKI(Public Key Infrastructure,公钥基础结构)证书。浏览器

咱们常见的证书根据用途不一样大体有如下几种:安全

  1. SSL证书,用于加密HTTP协议,也就是HTTPS。
  2. 代码签名证书,用于签名二进制文件,好比Windows内核驱动,Firefox插件,Java代码签名等等。
  3. 客户端证书,用于加密邮件。
  4. 双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。

这些证书都是由受认证的证书颁发机构——咱们称之为CA(Certificate Authority)机构来颁发,针对企业与我的的不一样,可申请的证书的类型也不一样,价格也不一样。CA机构颁发的证书都是受信任的证书,对于SSL证书来讲,若是访问的网站与证书绑定的网站一致就能够经过浏览器的验证而不会提示错误。网络

2、SSL证书申请与规则

SSL证书能够向CA机构经过付费的方式申请,也能够本身制做。post

CA机构颁发的证书价格很是昂贵,并且有效期通常只有一年到三年不等(年数不一样,价格也不一样),过时以后还要再次交钱申请,所以通常只有企业才会申请证书。可是随着我的网站的增多,目前也有针对我的的SSL证书服务,价格相对便宜一些,国内的话400多块钱就能申请到一个,国外更是有免费的SSL证书能够申请。网站

在申请SSL证书时须要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。网站的域名很是重要,申请人必须证实本身对域名有全部权,若是支持Hotmail.com,Gmail.com的SSL证书均可以随便申请,黑客们就不用作假证书欺骗了。此外,一个证书通常只绑定一个域名,若是CA机构心情好的话,会免费再绑一个,好比你要申请域名时绑定的域名是guokr.com,那么只有在浏览器地址是https://guokr.com的时候,这个证书才是受信任的,若是地址是https://www.guokr.com或者https://login.guokr.com,那么这个证书因为访问的域名与证书绑定的域名不一样,仍然会被浏览器显示为不受信任的。CA机构也提供申请通配符域名(例如,*.guokr.com),通配符域名至关于绑定了主域名下的全部域名,所以使用起来很是方便,可是价格也超级昂贵,一个通配符域名一年大概得5000块钱,只有企业才能够申请。加密

下面就来看看一个证书的信息: 
操作系统

在访问hotmail的时候会跳转到login.live.com,这时IE浏览器上会有一个小锁头,点一下那个小锁头再点击里面的“查看证书”就会出现上图的证书窗口,这里面咱们能够看到这个证书只有一个用途——向远程计算机证实身份信息,证书的用途会有不少,SSL只是其中之一。在“颁发给”这一项就是这个证书在申请时绑定的域名;下面的“颁发者”是证书的颁发机构。最下面的两个日期是证书申请时间以及过时的时间。这里咱们能够注意一下“颁发者”的信息,里面有“Extended Validation SSL”的字样,代表了这个证书是一个EV SSL证书(扩展验证SSL证书),EV SSL证书有个特色就是可让浏览器的地址栏变绿,同时显示出来证书所属公司的名称,以下图所示:插件



EV SSL证书与其余的证书相比,费用更高。3d

以上说的是向CA机构申请证书的状况,若是我的网站只为加密传输也能够本身制做SSL证书,本身制做的证书不会受到浏览器的信任,在访问的时候因为证书验证失败而给出警告。

3、证书的验证过程

证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书。咱们能够这样理解,根CA机构就是一个公司,根证书就是他的身份凭证,每一个公司由不一样的部门来颁发不一样用途的证书,这些不一样的部门就是中级CA机构,这些中级CA机构使用中级证书做为本身的身份凭证,其中有一个部门是专门颁发SSL证书,当把根证书,中级证书,以及最后申请的SSL证书连在一块儿就造成了证书链,也称为证书路径。在验证证书的时候,浏览器会调用系统的证书管理器接口对证书路径中的全部证书一级一级的进行验证,只有路径中全部的证书都是受信的,整个验证的结果才是受信。咱们仍是以login.live.com这个证书举例,在查看证书的时候,点击“证书路径”标签就会有下图的显示: 

根证书是最关键的一个证书,若是根证书不受信任,它下面颁发的全部证书都不受信任。操做系统在安装过程当中会默认安装一些受信任的CA机构的根证书,能够在“运行”里面运行“certmgr.msc”启动证书管理器,以下图所示: 

根证书的有效期长,支持的用途多以方便颁发不一样用途类型的中级证书;中级证书用途单一,有效期相对短一些,可是比具体的SSL证书要长不少。

若是SSL证书验证失败根据浏览器的不一样会有如下的错误提示: 

SSL证书验证失败有如下三点缘由:

  1. SSL证书不是由受信任的CA机构颁发的
  2. 证书过时
  3. 访问的网站域名与证书绑定的域名不一致

这三点缘由也是IE浏览器给出的提示。

小提示:若是你对哪一个根证书CA机构比较憎恨,能够将它的根证书删除,这样全部它颁发的证书都不会受信任。

4、SSL证书的安全问题

对HTTPS最多见的攻击手段就是SSL证书欺骗或者叫SSL劫持,是一种典型的中间人攻击。不过SSL劫持并不是只是用于攻击目的,在一些特殊状况下利用SSL劫持咱们能够更顺畅的访问网络,我会在后文提到。

以攻击为目的的SSL劫持若是不注意浏览器安全提示的话,很容易就中招。当网络中有中间人发起SSL劫持攻击时,攻击者须要伪造一个SSL证书发给浏览器,这个时候因为伪造的SSL证书不受信任,浏览器会给出提示。 
这里有一个误区,当SSL证书不受信任的时候,并不必定就是有SSL劫持发生,有种例外状况是:一些我的网站买不起合法的SSL证书,所以会本身制做一个SSL证书来加密传输的数据。若是你常常访问某个我的网站,并且你知道这个网站是干什么的,那么这种状况能够不用担忧。可是若是你访问的是网银,在线支付,或者是hotmail.com,gmail.com等,这类公司性质的网站必定会申请合法的SSL证书(12306.cn除外),一旦SSL证书不受信任,应该果断的终止访问,这个时候网络中必定会存在异常行为,对于一些小区宽带的用户必定要注意这点。因此做为我的用户,你必定要知道你访问的是什么网站,若是你只是一个没有多少计算机只是的普通网民,我相信你不会常常上那些本身制做SSL证书的我的网站,所以若是你没有办法判断网络是否是有异常,只要是证书有问题的,干脆就别再访问了。

小提示:对于12306.cn,必定要按照网站说的那样,“为保障您顺畅购票,请下载安装根证书”。

最后咱们总结一下使用SSL证书要注意的问题:

  1. 除非必要,不要随意安装根证书。安装根证书的时候必定要明确证书的来源。
  2. 对于网银,在线支付,重要邮箱等网站,必定要确保SSL证书是没有问题的,若是浏览器给出SSL证书错误的警告,必定要拒绝访问。一些小区宽带用户必定要注意这点。
  3. 因为如今我的申请SSL证书比较便宜,必定要注意挂着合法SSL证书的钓鱼网站(国外比较常见)。对于钓鱼网站,必定要看清域名,另外别相信什么中奖的消息,同时要安装带有钓鱼防御功能的安全软件。
相关文章
相关标签/搜索