1.1    数字证书

1.1.1   概念理解

一种文件的名称,例如一个机构或人的签名,能够证明这个机构或人的真实性。简而言之数字证书是一种网络上证明持有者身份的文件,同时还包括有公钥。证书是由国际上公认的证书机构颁发,这些机构是公认的信任机构。要想请这些机构颁发证书是要给钱的。客户端程序通过维护一个“根授信机构列表”,当收到一个证书时,查看这个证书是否在该列表中,如果是则这个证书是可信的,否则就不信任。

1.1.2   证书的信任

作为一个HTTPS的站点需要与一个证书绑定,无论如何,证书总需要一个机构颁发的,这个机构是国际公认的证书机构,也可以是任何一台安装有证书服务器的计算机,客户端能否信任这个站点证书,首先取决于客户端程序是否导入了证书颁发者的根证书。如图:

1.1.1  加密与认证

加密是指通信双方为了防止铭感信息在信道上被第三方窃听二泄露,将明文通过加密变成密文,如果第三方无法解密的话,就算他获得密文也无能为力;认证是指通信双方为了确认对方是值得信任的消息发送方或接受方,采取确认身份的方式。只有同时进行了加密和认证才能保证通信安全。

1.1.2   加密算法类型

1.1.3   对称机密:

密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;

1.1.4   非对称机密:

密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对于对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

1.1.5   CA

电子商务认证授权机构(CA,Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

Ø  CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。在SET交易中,CA不仅对持卡人、商户发放证书,还要对获款的银行、网关发放证书。

Ø  CA的证书签发机构,它是PKI(Public Key Infrastructure,公钥基础设施)的核心。CA是负责签发证书、认证证书、管理已颁发证书的机关,它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。

Ø  CA也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证CA的签字从而信任CA,任何人都可以得到CA的证书(含公钥),用以验证它所签发的证书。

Ø  如果用户得到一份属于自己的证书,它应先向CA提出申请,在CA判明申请者身份后,便为他分配一个公钥,并且CA将该公钥与申请者的身份信息绑定在一起,并为之签字后,便形成证书发给申请者。

Ø  如果一个用户想鉴别另一个证书的真伪,它就用CA的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。

1.1.6   CA认证证书

Ø  证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

Ø  证书的内容包括:电子签证机关信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普通遵循X.509国际标准。

Ø  如何在电子文档上实现签名的目的呢?我们可以使用数字签名。RSA公钥体制可实现对数字信息的数字签名,方法如:信息发送者用其私钥对从所传报文中提取出特征数据(或称数字指纹)进行RSA算法操作,以保证发信人无法抵赖曾发过该信息(即不可抵赖性),同时也确保信息报文在传递过程中未被篡改(即完整性)。当信息接收者收到报文后,就可以用发送者的公钥对数字签名进行验证。在数字签名中有重要作用的数字指纹是通过一类特殊的散列函数(HASH函数)生成的,对这些HASH函数的特殊要求是:

(1). 接受的输入报文数据没有长度限制。

(2). 对任何输入报文数据生成固定长度的摘要(数字指纹)输出。

(3). 从报文能方便地算出摘要。

(4).  难以对指定的摘要生成一个报文,而由该报文可以算出该指定的摘要。

(5). 难以生成两个不同的报文具有相同的摘要。

1.1.7   CA认证验证

接收方在收到信息后用如下的步骤验证您的签名:

(1). 使用自己的私钥信息转为明文。

(2). 使用发信方的公钥从数字签名部分得到原摘要。

(3). 收方对您所发送的源信息进行HSAH运算,也产生一个摘要。

(4). 收方比较两个摘要,如果两者相同,则可以证明信息签名者的身份。

如果两个摘要内容不符合,则说明:

Ø  可能对摘要进行签名所用的私钥不是签名者的私钥,这就表明信息的签名者不可信。

Ø  也可能收到的信息根本就不是签名者发送的信息,信息在传输过程中已经遭到破坏或篡改。

CA认证数字证书

数字证书为实现双方安全通信提供了电子认证。在因特网、公司内部网或外部网中,使用数字证书实现身份识别和电子信息加密。数字证书中含有密钥对(公钥和私钥)所有者的识别信息,通过验证识别信息的真伪实现对证书持有者身份的认证。

1.1.8   CA认证使用数字证书

数字证书在用户公钥后附加了用户信息及CA的签名,公钥是密钥的一部分,另一部分是私钥。公钥公之于众,谁都可以使用。私钥只有自己知道。由公钥加密的信息只能由与之相对应的私钥解密。为确保只有某个人才能阅读自己的信件,发送者要用收件人的公钥加密信件。

收件人便可用自己的私钥解密信件,同样,为证实发件人的身份,发送者要用自己的私钥对信件进行签名。收件人可使用发送者的公钥对签名进行验证,以确认发送者的身份。

在线交易中您可使用数字证书验证对方身份,用数字证书加密信息,可以确保只有接收者才能解密、阅读原文,信息在传递过程中的保密性完整性,有了数字证书网上安全才得以体现,电子邮件、在线交易和信用卡购物的安全才能得到保障。

1.1.1   自己做CA

不管你的证书是由那个机构颁发的,对于通讯过程来说都是安全的,因此对于某个特定的圈子来说,完全可以由该圈子中公认的机构做CA。比如对于一个企业来说,企业及其客户所组成的圈子中,企业可以认为是具有权威新的,于是就可以作为一个权威机构向客户颁发证书。

在这里需要使用一个软件OPENSSL,OPENSSL的功能相当强大,我们只使用CA相关部分功能,在使用OPENSSL前,先要设置一下环境变量OPENSSL_CONF,使其指向OPENSSL安全目录下的OPENSSL.CNF文件。产生证书的过程大致为:生成密钥对->生成签证请求->签证。签证后的证书就是数字证书,其中保存有对应实体的公钥信息。

1.2     一些技术术语

1.2.1   密钥

公钥和私钥的统称为密钥。

1.2.2   密钥对

公钥(证书)和私钥成对存在。

通信双方各持有自己的私钥和对方的公钥,自己的私钥需密切保护,而公钥是公开给对方的。在Windows下,单独存在的公钥一般后缀是.cer的文件。

1.2.3   公钥与私钥

在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通讯方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。

1.2.4   公钥私钥的原则

Ø  一个公钥对应一个私钥。

Ø  在密钥对中,对大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。

Ø  如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。

Ø  如果用其中一个密钥可以解密数据,则该数据必然是对应的那个密钥进行的加密。

Ø  非对称密钥密码系统的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的。

比如有两个用户甲、乙两个用户,甲用户想把一段明文通过双钥加密的技术发送给乙,乙有一对密钥(私钥和公钥),那么加密盒解密的过程如下例子:

(1). 乙用户将他的公开密钥传送给甲。

(2). 甲用乙的公开密钥加密他的消息,然后传送给乙。

(3). 乙用他的私人密钥解密甲发送的消息。

那么乙是怎么辨认甲的呢,如下例子:

(1). 甲用他的私人密钥对文件加密,从而对文件签名。

(2). 甲将签名后的文件传送给乙。

(3). 乙用甲的公钥解密文件,从而验证签名。

1.2.5   JKS(Java key store)

Java用的存储密钥的容器,可以同时容纳N个公钥或私钥,后缀一般是.jks或者.keystore或.truststore等,千奇百怪。不管什么后缀,它就是一个容器,各个公司或机构叫法不同而已,比如把只包含“受信任的公钥”的容器存在.truststore文件等。

Ø  用jdk\bin目录下的keytool.exe对其进行查看、导入、导出、删除、修改密码等各种操作。

Ø  可以对jks容器加入密码,输入正确才可以操作此容器中密钥。

Ø  还有一个密码的概念与上着不同,是jks中存储着的私钥的密码,通常是绝密的。

Ø  pfx功能和jks功能相同但是文件格式不同,pfx是浏览器用的,可以用一些工具程序把pfx转化成jks格式供java程序使用。

1.3    常见的几种HTTPS系统访问

经https协议的数据经过加密传输,防止第三方监听,冒充和篡改。

Ø  不需要用户做任何操作,比如:https://www.verisign.com

这是因为公钥是合法的(公钥是可信任的机构颁发,和实际域名吻合,而且没有到期)。用IE访问时空白处点右键可以查看公钥信息。

Ø  HTTPS的页面会弹出公钥确认提示

公钥不合法(不是可信任的机构颁发,和实际域名不吻合,已到期),但用户点“是”即表示忽略危险,继续访问。

Ø  需要向浏览器中导入一个文件才可以继续访问

一般是银行在线交易等特别需要安全的场合,站方(银行)需要验证访客身份(如果确认必须是已注册的网银商户),需要在浏览器中导入含有访客私钥的pfx文件。

基于SSL协议的双向认证 - 数字证书 [2]的更多相关文章

  1. 基于SSL协议的双向认证 - 双向认证 [3]

    1      SSL双向认证的实现 这里是基于SSL和Tomcat配置实现的,配置方法如下: 1.1    生成CA数字证书 首先需要配置OPENSSL环境变量. 我的OPENSSL配置文件路径是“D ...

  2. 基于SSL协议的双向认证 - SSL协议 [1]

    1  概要说明 在互联网通信方式中,目前用的最广泛的是HTTPS配合SSL和数字证书来保证传输和认证安全了. 2  详细介绍 2.1    HTTPS HTTPS全称:Hypertext Transf ...

  3. Centos 7 环境下,如何使用 Apache 实现 SSL 虚拟主机 双向认证 的详细教程:

    1. testing ! ... 1 1 原文参考链接: http://showerlee.blog.51cto.com/2047005/1266712 很久没有更新LAMP的相关文档了,刚好最近单位 ...

  4. 基于OpenSSL的PKI的PKI数字证书系统实现

    本篇主要介绍了基于OpenSSL的PKI的PKI数字证书系统实现,利用OpenSSL建立一个CA中心的详细解决方案和建立的具体步骤. 1.PKI数字证书系统设计 PKI数字证书系统主要包括证书颁发机构 ...

  5. 基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good

    上周帮一个童鞋做一个数字认证的实验,要求是编程实现一个基于X.509证书认证的过程,唉!可怜我那点薄弱的计算机网络安全的知识啊!只得恶补一下了. 首先来看看什么是X.509.所谓X.509其实是一种非 ...

  6. 【密码学】SSL双向认证以及证书的制作和使用

    客户端认证服务器: 正规的做法是:到国际知名的证书颁发机构,如VeriSign申请一本服务器证书,比如支付宝的首页,点击小锁的图标,可以看到支付宝是通过VeriSign认证颁发的服务器证书: 我们用的 ...

  7. ssl介绍以及双向认证和单向认证原理

    SSL安全证书可以自己生成,也可以通过第三方的CA(Certification Authority)认证中心付费申请颁发. SSL安全证书包括: 1.       CA证书,也叫根证书或中间级证书.单 ...

  8. 基于java的https双向认证,android上亦可用

    From: http://my.oschina.net/jjface/blog/339144 概述: 客户端,浏览器或者使用http协议和服务器通信的程序. 如: 客户端通过浏览器访问某一网站时,如果 ...

  9. linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)

    背景 由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核. 1.必须支持传输层安全(TL ...

随机推荐

  1. Apache配置HTTPS功能

    apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...

  2. HTTPS原理

    谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>,文中介绍了在使用HTTPS进行网络加密传输的一些情况,从回复来看,争议还是有的.随着网络越来越普及,应用越来越广泛,一 ...

  3. 今天执行grep命令差点把服务器搞崩

    grep "rst" -r ./ >> a.log 今天执行这个命令差点把服务器搞崩了. 本意是查找所有源代码文件中含有rst字符串的行,打印到文件a.log中,然后进 ...

  4. 【原】ajaxupload.js上传报错处理方法

    相信大家在工作中经常用到文件上传的操作,因为我是搞前端的,所以这里主要是介绍ajax在前端中的操作.代码我省略的比较多,直接拿js那里的 $.ajaxFileUpload({ url:'www.cod ...

  5. CSS3定位和浮动详解

    本文为大家分享CSS3定位和浮动的基础概念,与使用方法,供大家参考,具体内容如下 一.定位 1. css定位: 改变元素在页面上的位置 2. css定位机制: 普通流: 浮动: 绝对布局: 3. cs ...

  6. ArcGIS Server 10.1 for Linux典型问题总结

    关闭开启server服务: [gis@localhost ArcGISServer]$ cd /home/gis/arcgis/server [gis@localhost server]$ ./sto ...

  7. js内存泄漏

    IE和webkit浏览器都是采用计数来处理垃圾,也就是说每个对象被引用一次,该对象的计数器成员+1,如果计数器为0,那么这个对象被销毁 例如: function A() { var obj = {}; ...

  8. background属性

    background: url(images/01.jpg) 0 10px; 效果: background: url(images/01.jpg) 0 -10px; 效果: *注释:10px 是网上去 ...

  9. Robot Framework--11 RF结合Jenkins

    转自:http://blog.csdn.net/tulituqi/article/details/17846463 为什么我们要引入RF?其实最初我们引入RF是为了能够快速的开展自动化验收测试,为敏捷 ...

  10. php/js互传cookie中文乱码的问题

    问题发现: 过去好好的,今天突然网页出现了问题. 在猎豹和IE都出现问题,在360浏览器就正常. 经过排错,最终发现:  js存储cookie,php读取的时候成了乱码 . 问题分析: 这是因为文字编 ...