PKI与证书服务应用以及相关安全协议

                                                                                                                                             ---------Isuncle 原著


关于Windows 服务器版本的PKI与证书服务应用,说白了就是为了来更安全更好的保护我们传输的数据防止被别人截获或篡改所引用的一个新型加密技术,使我们大家上网浏览网页等一系列操作更加的放心。下面我们来了解下关于这方面的知识

PKI 概念:

  • PKI

    • 公钥基础设施(PublicKey Infrastructure

    • 通过使用公钥技术数字签名来确保信息安全

    • 由公钥加密技术、数字证书、CARA组成

  • PKI体系能够实现的功能有

    • 身份验证

    • 数据完整性

    • 数据机密性

    • 操作的不可否认性


      PKIPublic KeyInfrastructure,公钥基础设施)是通过使用公钥技术和数字签名来确保信息安全,并负责验证数字证书持有者身份的一种技术。

      PKI由公钥加密技术、数字证书、认证机构CA、注册机构RA等共同组成。

      数字证书用于用户的身份验证。

      认证机构CAPKI的核心,负责管理PKI中所有用户(包括各种应用程序)的数字证书的生成、分发、验证和撤销。

      RA(注册机构)接受用户的请求,负责将用户的有关申请信息存档备案,并存储在数据库中,等待审核,并将审核通过的证书请求发送给证书颁发机构。RA分担了CA的部分任务,使管理变得更方便。

      PKI体系依据公钥加密技术具有以下特点。

      身份验证:确认用户的身份标识。

      数据完整性:确保数据在传输过程中没有被修改。

      数据机密性:防止非授权用户获取数据。

      操作的不可否认性:确保用户不能冒充其他用户的身份。



      公钥加密技术:


  • 公钥加密技术是PKI的基础

  • 公钥与私钥关系

    • 公钥和私钥是成对生成的,互不相同,互相加密与解密

    • 不能根据一个密钥来推算出另一个密钥

    • 公钥对外公开,私钥只有私钥持有人才知道

    • 私钥应该由密钥的持有人妥善保管

  • 根据实现的功能不同,可分为数据加密和数字签名


    公钥加密相对于以往的对称加密具有很大的有点,下面我们先了解下对称加密从而对比一下就明了:


    对称加密:用相同的密钥加密和解密。缺点是不安全,密钥一旦泄露,加密的数据也变得不安全。优点是处理速度快。

    公钥与私钥的特点不需要深究为什么,如为什么是成对生成的,为什么不能根据一个密钥推算出另外一个密钥等。


    数据加密:


  • 发送方使用接收方的公钥加密数据

  • 接收方使用自己的私钥解密数据


wKioL1MATWuBcWqAAABUlMZJ0PQ195.jpg

  • 数据加密能保证所发送数据的机密性



    数字签名:



  • 发送方

    • 对原始数据执行HASH算法得到摘要值

    • 发送方用自己私钥加密摘要值

    • 将加密的摘要值与原始数据发送给接收方

wKioL1MATWzSRYRbAABWW2TNIq0123.jpg

    • 数字签名保证数据完整性、身份验证和不可否认(防止了电子信息被修改,

      或冒用别人的信息发送信息)



      因为PKI提供了完整的加密解密方案,所以有许多用于安全通信协议和服务都是基于PKI来实现的,如SSLIPSec等。


      PKI协议:

  • SSL

    SSLSecureSocket Layer)安全套接字层

    SSL使用PKIX.509数字证书技术保护信息的传输,可确保数据在网络传输过程中不会被截取及窃听并且保证数据的完整性。目前的浏览器都支持SSL。(X.509是由电信联盟(ITU-T)制定的数字证书标准。

    SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持

    SSL协议可分为两层:

    SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

    SSL握手协议SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

    提供服务

    • 认证用户和服务器,确保数据发送到正确的客户机和服务器

    • 加密数据以防止数据中途被窃取

    • 维护数据的完整性,确保数据在传输过程中不被改变

服务器认证阶段:

1客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;

2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;

3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;

4)服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

用户认证阶段:

在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。


  • HTTPS:

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。

https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。

它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

限制:

它的安全保护依赖浏览器的正确实现以及服务器软件、实际加密算法的支持.

一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被***者利用,常见例子是模仿银行域名的钓鱼***少数罕见***在网站传输客户数据时发生,***者尝试窃听数据于传输中

商业网站被人们期望迅速尽早引入新的特殊处理程序到金融网关,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户***和损害。

extended validation sslcertificates翻译为中文即扩展验证(EV)SSL证书,该证书经过最彻底的身份验证,确保证书持有组织的真实性。独有的绿色地址栏技术将循环显示组织名称和作为CA的GlobalSign名称,从而最大限度上确保网站的安全性,树立网站可信形象,不给欺诈钓鱼网站以可乘之机。

对线上购物者来说,绿色地址栏是验证网站身份及安全性的最简便可靠的方式。在IE7.0、FireFox3.0、Opera9.5等新一代高安全浏览器下,使用扩展验证(EV)SSL证书的网站的浏览器地址栏会自动呈现绿色,从而清晰地告诉用户正在访问的网站是经过严格认证的。此外绿色地址栏临近的区域还会显示网站所有者的名称和颁发证书CA机构名称,这些均向客户传递同一信息,该网站身份可信,信息传递安全可靠,而非钓鱼网站

    • 使用SSL来实现安全的通信

  • IPSec

    • 目前已经成为最流行的×××解决方案


      IPSecInternetProtocolSecurity)是安全联网的长期方向。它通过端对端的安全性来提供主动的保护以防止专用网络 Internet 的***。在通信中,只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。在 Windows 2000Windows XP Windows Server 2003 家族中,IPSec 提供了一种能力,以保护工作组、局域网计算机、域客户端和服务器、分支机构(物理上为远程机构)、Extranet 以及漫游客户端之间的通信。


好了,上面我们介绍了PKI协议以及基于PKI协议实现的SSLHTTPSIPSec,下面我们回归正题,那么到底什么才是证书呢?- -

什么是证书:

  • 证书用于保证密钥的合法性

  • 证书的主体可以是用户、计算机、服务等

  • 证书格式遵循X.509标准

  • 数字证书包含信息

    • 使用者的公钥值

    • 使用者标识信息(如名称和电子邮件地址)

    • 有效期(证书的有效时间)

    • 颁发者标识信息

    • 颁发者的数字签名

  • 数字证书由权威公正的第三方机构即CA签发


    CA的作用:


  • CACertificate Authority,证书颁发机构)

  • CA的核心功能是颁发和管理数字证书

  • CA的作用

    • 处理证书申请

    • 发放证书

    • 更新证书

    • 接受最终用户数字证书的查询、撤销

    • 产生和发布证书吊销列表(CRL

    • 数字证书归档

    • 秘钥归档

    • 历史数据归档


      证书的颁发过程:


wKioL1MATW-RK3cWAAGK9WS4Fgg247.jpg

  1. 用户生成密钥对,根据个人信息填好申请证书的信息,并提交证书申请信息。


  2. 在企业内部网中,一般使用手工验证的方式,这样更能保证用户信息的安全性和真实性。

  3. 如果验证请求成功,那么,系统指定的策略就被运用到这个请求上,比如名称的约束、密钥长度的约束等。


  4. RA用自己的私钥对用户申请信息签名,保证用户申请信息是RA提交给CA的。

  5. CA用自己的私钥对用户的公钥和用户信息ID进行签名,生成电子证书。这样,CA就将用户的信息和公钥捆绑在一起了,然后,CA将用户的数字证书和用户的公用密钥公布到目录中。


  6. CA将电子证书传送给批准该用户的RA

  7. RA将电子证书传送给用户(或者用户主动取回)。


8.用户验证CA颁发的证书,确保自己的信息在签名过程中没有被篡改,而且通过CA的公钥验证这个证书确实由所信任的CA机构颁发。

安装证书服务:

  • 添加Active Directory证书服务

wKiom1MATZfTdM_hAAJkem34DAQ648.jpg

  • 选择角色服务

wKioL1MATXTRjyLVAAHv8IWFm9g820.jpg

  • 指定企业安装类型

wKiom1MATZvz80uFAAH0yIdQ4xo129.jpg

CA的类型有两大类企业CA和独立CA

企业CA的主要特点:

1)企业CA需要AD服务,即计算机在活动目录中才可以使用。

2)当安装企业根CA时,对于域中的所有用户和计算机,都会被自动添加到受信任的根证书颁发机构的证书存储区中。

3)必须是域管理员,或是对AD具有写权限的管理员,才能安装企业根CA

独立CA主要列特征:

1)独立CA不需要使用AD目录服务。独立CA可以在涉及ExtranetInternet时使用。

2)向独立CA提交证书申请时,证书申请者必须在证书申请中明确提供所有关于自己的标识信息以及所需的证书类型(向企业CA提交证书申请时无需提供这些信息,因为企业用户的信息已经在AD中)。

3)默认情况下,发送到独立CA的所有证书申请都被设置为挂起,直到独立CA的管理员验证申请者的身份并批准申请。这完全是出于安全性的考虑,因为证书申请者的凭证还没有被独立CA验证。

企业CA和独立CA中又分别可以分为根CA和从属CA(子级CA):

1)根CA是指在组织的PKI中最受信任的CA。一般情况下,根CA的物理安全性和证书颁发策略都比下级CA更严格。如果根CA的安全性受到威胁或者向未授权的机构颁发了证书,则组织中任何基于证书的安全性都会很容易受到***。虽然根CA也可以向最终用户颁发证书,但是在大多数情况中,根CA只是用于向其他CA(称为从属CA)颁发证书。

2)从属CA是由组织中的另一CA(一般是根CA)颁发证书的CA。通常,从属CA为特定的任务(如安全的电子邮件、基于Web的身份验证或智能卡验证)颁发证书,一般可以给用户和计算机颁发证书。从属CA还可以向其他更下级的CA颁发证书。

  • 指定CA类型

    (在企业里第一个证书服务将会是跟CA,如果是第二第三则可以选择子级CA,根CA会授权给子CA颁发证书的权限,跟CA权利最高。)

wKiom1MATZ2hpfTzAAIBVt8-d-c022.jpg

  • 新建私钥

wKioL1MATXqhehLRAAJi1Pb5hZs429.jpg

  • 配置加密

wKiom1MATaKwS5DiAAJaT40hm9c519.jpg

加密服务提供程序(CSP):

加密服务提供程序(CSP)是执行身份验证、编码和加密服务的程序,基于Windows的应用程序通过Microsoft加密应用程序编程接口(CryptoAPI)访问该程序。每个CSP提供不同的CryptoAPI,某些还提供更强大的加密算法,而另外一些则使用硬件组件(如智能卡)。加密服务提供程序列表中填充了计算机上满足以下配置选项组合所指定条件的所有可用提供程序。

哈希算法:通过此选项,可以选择高级哈希算法。默认情况下,可以使用以下算法:AES-GMACMD2MD4MD5SHA1SHA256SHA384 以及SHA512

密钥长度:通过此选项,可以指定在所选算法中使用的密钥所需的最小长度。默认情况下将使用计算机上受所选算法支持的最小密钥长度。密钥的长度越长越安全,对于根CA,应使用长度至少为2048位的密钥。

wKioL1MATYChoXcrAAO7gGTCtH0400.jpg

  • 申请证书

    • 运行Internet 信息服务管理器

wKiom1MATaiApOwHAALXyvijP1M783.jpg

    • 创建证书申请

wKioL1MATYXDb0v8AAIPB_QLIjo020.jpg

    • 配置可分辨名称属性

wKiom1MATauTJ4L2AAE1fJt_lcA575.jpg

    • 指定证书文件名

      (这个路径自己保存,并且牢牢的记住,因为申请时后面要提交)

wKioL1MATYeRmuvrAADNGoZnjJs210.jpg

    • 证书文件内容

wKiom1MATbHhhHtvAASY1XAWXOM025.jpg

  • 提交申请证书

    • 访问证书服务器并申请证书

      http://ip/certsrv

    • 使用高级证书申请

wKioL1MATY7Ao9CeAAH33yo1Xh0204.jpg

    • 使用Base64编码证书申请

wKiom1MATbaD1L7XAAKJLI47F_Y071.jpg

    • 提交证书申请

wKioL1MATZTCyzwkAANnpJTlEdU087.jpg

  • 颁发证书

    (如果使用的是企业CA,在提交申请后CA会自动颁发证书。如果是独立CA,则还需要人工操作颁发证书。)


    • 企业CA自动颁发证书

    • 独立CA颁发挂起的申请

wKiom1MATbuAdWFOAAHX6GiwUw4552.jpg

    • 下载证书

wKioL1MATZnzm3UBAAIIChRhpSI326.jpg

  • Web服务器上安装证书

    • 完成证书申请

wKioL1MATZuAQmejAAIPB_QLIjo602.jpg

查找从Web证书管理器中下载的证书

wKiom1MATcGDbIESAADwJ6FAtv0919.jpg

  • 配置Web证书

    • 编辑绑定

wKioL1MATZ-iYTYZAALJzVGWk0Q281.jpg

wKiom1MATcXwrqjTAACMkWjKBXE368.jpg

    • 添加网站绑定

wKiom1MATcbwcXTvAACSIWen9K4001.jpg

    • SSL设置

      忽略:无论用户是否拥有证书,都将被授予访问权限

      接受:用户可以使用客户端证书访问资源,但证书并不是必须的

      必须:服务器在将用户与资源连接之前要验证客户端证

wKioL1MATaPjZOhAAAIEDYjDrRE413.jpg

  • 使用HTTPS协议访问网站

wKiom1MATcrhv_zzAAFdzdma0tU417.jpg

  • 证书的导入与导出

    • 导出证书

wKiom1MAUX_hdXTGAAH4zS0BmF0496.jpg

    • 导入证书

wKioL1MAUVzB7jV_AAG8kRo6tFU213.jpg