SSL证书必知必会:数字证书及CA基础知识


数字证书


     数字证书是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字***,而是身份认证机构盖在数字***上的一个章或印(或者说加在数字***上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书的一个重要的特征就是只在特定的时间段内有效。

   数字证书里存有很多数字和英文,当使用数字证书进行身份认证时,它将随机生成128位的身份码,每份数字证书都能生成相应但每次都不可能相同的数码,从而保证数据传输的保密性,即相当于生成一个复杂的密码。

   数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民***,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,可以更加方便灵活地运用在电子商务和电子政务中。

   数字证书可用于:发送安全电子邮件、访问安全站点、网上证券交易、网上招标采购、网上办公、网上保险、网上税务、网上签约和网上银行等安全电子事务处理和安全电子交易活动。

   数字证书可以通俗的理解为古代调用军队的虎符或令牌,将军拿的部分是公钥证书,皇帝是CA机构同时提供给调军的大臣的是证书对应的私钥信息。

CA机构

   CA机构,又称为证书授证(Certificate Authority)中心,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得***者不能伪造和篡改证书。它负责产生、分配并管理所有参与网上交易的个体所需的数字证书,因此是安全电子交易的核心环节。由此可见,建设证书授权(CA)中心,是开拓和规范电子商务市场必不可少的一步。为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不仅需要对用户的身份真实性进行验证,也需要有一个具有权威性、公正性、唯一性的机构,负责向电子商务的各个主体颁发并管理符合国内、国际安全电子交易协议标准的电子商务安全证书。

    WebTrust是由全球两大著名注册会计师协会AICPA(美国注册会计师协会)和CICA(加拿大注册会计师协会)共同制定的安全审计标准,主要对互联网服务商的系统及业务运作逻辑安全性、保密性等共计七项内容进行近乎严苛的审查和鉴证。

 只有通过WebTrust国际安全审计认证,根证书才能预置到主流的浏览器而成为一个全球可信的认证机构(CA)。

   根证书安装到操作系统或浏览器中,浏览器将默认信任该根证书签名的所有子签名证书,这也是中国铁道部,CNNIC,alibaba通过诱导用户安装根证书的最终目的,这样所有经这些非权威CA机构签名的证书(软件和网站)就可以毫无阻碍的在你的电脑上运行。


证书签发过程

 CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构CA使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

数字证书颁发过程一般为:
      用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息(CSR)传送给认证中心(CA)。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布。数字证书各不相同,每种证书可提供不同级别的可信度。可以从证书发行机构获得您自己的数字证书。


工作原理

数字证书采用公钥体制,即利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样信息就可以安全无误地到达目的地了。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。其数学原理是将一个大数分解成两个质数的乘积,加密和解密用的是两个不同的密钥。即使已知明文、密文和加密密钥(公开密钥),想要推导出解密密钥(私密密钥),在计算上是不可能的。按当下计算机技术水平,要破解1024位RSA密钥,需要上千年的计算时间。公开密钥技术解决了密钥发布的管理问题,商户可以公开其公开密钥,而保留其私有密钥。购物者可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送给商户,然后由商户用自己的私有密钥进行解密。
用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:
保证信息是由签名者自己签名发送的,签名者不能否认或难以否认。
保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。


数字签名

将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
将该报文摘要值用发送者的私人密钥加密(对明文进行解密完全没问题,会得出一个不可读的“明文”),然后连同原报文一起发送给接收者,而“加密”后的报文即称数字签名。
接收方收到数字签名后,用同样的HASH算法对原报文计算出报文摘要值,然后与用发送者的公开密钥对数字签名进行解密(原先已经把签名加密了,再解密就能还原)得到的报文摘要值相比较。如相等则说明报文确实来自所称的发送者。
(由于只有拥有私钥的签名者能通过“解密”摘要生成签名,因此具有安全和不可抵赖性。)
那为什么是对报文摘要进行加密,而不是对原报文进行加密呢?这是因为RSA加解密非常耗时,被加密的报文越大,耗得时间越多,因此聪明的人类对其摘要进行加密,(因为报文摘要是要比原报文小得多),仍然能够起到同样的作用。这就是为什么多了个报文摘要。

证书分类

基于数字证书的应用角度分类,数字证书可以分为以下几种:

服务器证书

服务器证书被安装于服务器设备上,用来证明服务器的身份和进行通信加密。服务器证书可以用来防止欺诈钓鱼站点。

在服务器上安装服务器证书后,客户端浏览器可以与服务器证书建立SSL连接,在SSL连接上传输的任何数据都会被加密。同时,浏览器会自动验证服务器证书是否有效,验证所访问的站点是否是假冒站点,服务器证书保护的站点多被用来进行密码登录、订单处理、网上银行交易等。全球知名的服务器证书品牌有GlobalSign,Verisign,Thawte,Geotrust等。
SSL证书主要用于服务器(应用)的数据传输链路加密和身份认证,绑定网站域名,不同的产品对于不同价值的数据和要求不同的身份认证。
     最新的高端SSL证书产品是扩展验证(EV)SSL证书。在IE7.0、FireFox3.0、Opera 9.5等新一代高安全浏览器下,使用扩展验证VeriSign(EV)SSL证书的网站的浏览器地址栏会自动呈现绿色,从而清晰地告诉用户正在访问的网站是经过严格认证的。
SSL证书还有企业型SSL证书(OVSSL) 及域名型证书(DVSSL)。


电子邮件证书

电子邮件证书可以用来证明电子邮件发件人的真实性。它并不证明数字证书上面CN一项所标识的证书所有者姓名的真实性,它只证明邮件地址的真实性。
收到具有有效电子签名的电子邮件,我们除了能相信邮件确实由指定邮箱发出外,还可以确信该邮件从被发出后没有被篡改过。
另外,使用接收的邮件证书,我们还可以向接收方发送加密邮件。该加密邮件可以在非安全网络传输,只有接收方的持有者才可能打开该邮件。

个人证书

客户端证书主要被用来进行身份验证和电子签名。
安全的客户端证书被存储于专用的usbkey中。存储于key中的证书不能被导出或复制,且key使用时需要输入key的保护密码。使用该证书需要物理上获得其存储介质usbkey,且需要知道key的保护密码,这也被称为双因子认证。这种认证手段是目前在internet最安全的身份认证手段之一。key的种类有多种,指纹识别、第三键确认,语音报读,以及带显示屏的专用usbkey和普通usbkey等。
数字证书在广义上可分为:个人数字证书、单位数字证书、单位员工数字证书、服务器证书、×××证书、WAP证书、代码签名证书和表单签名证书。

代码签名证书Code Signing SSL 
     代码签名证书Code Signing SSL为软件开发商提供了一个理想的解决方案,使得软件开发商能对其软件代码进行数字签名。通过对代码的数字签名来标识软件来源以及软件开发者的真实身份,保证代码在签名之后不被恶意篡改。使用户在下载已经签名的代码时,能够有效的验证该代码的可信度。

    使用代码签名证书的好处 开发商所发行的代码程序或内容若通过代码签名验证可提升软件的下载、采用率和发行率。 减少代码程序及内容出现错误讯息和安全性警告,建立品牌的信任关系。 防止使用者下载到含有恶意档案的代码程序及内容。 终端使用者透过互联网和行动网络下载、安装代码程序和内容时,由系统跳出开发者的信息,大幅提高安全性。 确保终端用户知道该软件是合法的,且该代码自发行以来没有被篡改过。 代码签名证书可消除 Internet Explorer 以及 Windows 操作系统中弹出的「不明发行商」。


扩展阅读:

生成CSR文件时的常见问题

1.不要使用某些特殊字符

在申请服务器SSL证书时,不要使用某些特殊字符,否则在您提交CSR文件后,会出现"105"的错误代码。这个错误是由于在您生成CSR文件时,输入的信息中包含一些特殊字符,如:(@,#,&,!,等等,例如:您可以将"&"用"and"代替)。

公用名Common Name 是什么?

2.保存好私钥Key文件 
     要生成CSR文件,你必须为服务器创建密钥key。密钥key和SSL证书是不可分开的,一旦丢失或损坏了公钥、私钥或密码,重新生成密钥key文件后,和原来的SSL证书就不匹配了,这时需要重新生成CSR文件.

apache相关配置:

SSLEngine on 启用SSL功能 
SSLCertificateFile 证书文件domain.crt 
SSLCertificateKeyFile 私钥文件domain.key 
SSLCertificateChainFile 证书链文件 CA.crt

nginx相关配置:
listen 443 SSL访问端口号为443 
ssl on 启用SSL功能 
ssl_certificate 证书文件yourdomain_server.crt 
ssl_certificate_key 私钥文件yourdomain_server.key

将证书按指定的目录和文件名保存,并将密钥文件也保存为指定目录下的文件名. 
证书文件: httpd/conf/ssl.crt/server.crt (这个文件是证书颁发机构发回给你的证书文件。)
密钥文件: httpd/conf/ssl.key/server.key


SSL证书申请流程 
1.生成证书签名请求CSR文件
2. 将CSR文件和相关证明材料提交到CA机构或相关代理商,申请相关SSL证书
3. SSL 证书颁发机构Comodo / RapidSSL / GeoTrust / Thawte / VeriSign / GlobalSign / AlphaSSL / Symantec / Trustwave接受到证书申请文件CSR 后,系统自动发送一封确认邮件到域名管理员邮箱,验证域名所有人是否真实有效。
4.通过域名公开信息验证组织信息,通过人工验证方式确认组织信息的真实性。
5.颁发SSL证书 
    域名验证DV SSL 证书一般在确认邮件完成后1-2个小时就可以签发相关SSL证书;企业验证OV SSL 证书 / 增强验证EV SSL 证书验证时间会比较长,5-15个工作日,需要配合提交一些必要文件到证书机构,验证完成后CA会发送 SSL证书到注册邮箱。