数字证书nginx
数字证书是互联网通信中标志通信各方身份信息的一串数字,提供了一种在Internet上验证通讯实体身份的方式,数字证书不是数字***,而是身份认证机构盖在数字***上的一个章或印(或者说加在数字***上的一个签名)。它是由权威机构——CA机构,又称为证书受权(Certificate Authority)中心发行的,人们能够在网上用它来识别对方的身份。最简单的证书包含一个公开密钥、名称以及证书受权中心的数字签名。数字证书的一个重要的特征就是只在特定的时间段内有效。算法
数字证书里存有不少数字和英文,当使用数字证书进行身份认证时,它将随机生成128位的身份码,每份数字证书都能生成相应但每次都不可能相同的数码,从而保证数据传输的保密性,即至关于生成一个复杂的密码。apache
数字证书绑定了公钥及其持有者的真实身份,它相似于现实生活中的居民***,所不一样的是数字证书再也不是纸质的证照,而是一段含有证书持有者身份信息并通过认证中心审核签发的电子数据,能够更加方便灵活地运用在电子商务和电子政务中。api
数字证书可用于:发送安全电子邮件、访问安全站点、网上证券交易、网上招标采购、网上办公、网上保险、网上税务、网上签约和网上银行等安全电子事务处理和安全电子交易活动。浏览器
数字证书能够通俗的理解为古代调用军队的虎符或令牌,将军拿的部分是公钥证书,皇帝是CA机构同时提供给调军的大臣的是证书对应的私钥信息。安全
CA机构服务器
CA机构,又称为证书授证(Certificate Authority)中心,做为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA中心为每一个使用公开密钥的用户发放一个数字证书,数字证书的做用是证实证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得***者不能伪造和篡改证书。它负责产生、分配并管理全部参与网上交易的个体所需的数字证书,所以是安全电子交易的核心环节。因而可知,建设证书受权(CA)中心,是开拓和规范电子商务市场必不可少的一步。为保证用户之间在网上传递信息的安全性、真实性、可靠性、完整性和不可抵赖性,不只须要对用户的身份真实性进行验证,也须要有一个具备权威性、公正性、惟一性的机构,负责向电子商务的各个主体颁发并管理符合国内、国际安全电子交易协议标准的电子商务安全证书。网络
WebTrust是由全球两大著名注册会计师协会AICPA(美国注册会计师协会)和CICA(加拿大注册会计师协会)共同制定的安全审计标准,主要对互联网服务商的系统及业务运做逻辑安全性、保密性等共计七项内容进行近乎严苛的审查和鉴证。dom
只有经过WebTrust国际安全审计认证,根证书才能预置到主流的浏览器而成为一个全球可信的认证机构(CA)。
根证书安装到操做系统或浏览器中,浏览器将默认信任该根证书签名的全部子签名证书,这也是中国铁道部,CNNIC,alibaba经过诱导用户安装根证书的最终目的,这样全部经这些非权威CA机构签名的证书(软件和网站)就能够毫无阻碍的在你的电脑上运行。ide
证书签发过程
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证书到注册邮箱。