您的位置:首页 > 理论基础 > 计算机网络

https

2016-07-18 14:16 2216 查看
安全套接字层超文本传输协议HTTPS("Hypertext Transfer Protocol Secure"是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定)


private 私有的
validate 证实,使合法
generate 形成,产生
random 随机的,任意的
decrypted 解密


单词

上图1-8步骤的详解:

1. 客户端发起HTTPS请求:就是用户在浏览器里输入一个https网址,然后连接到server的443端口。
2. 服务端的配置:
采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,
才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl就是个不错的选择,有1年的免费服务)。
这套证书其实就是一对公钥和私钥。如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,
别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3. 传送证书:证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4. 客户端解析证书:
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,
则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值。
然后用证书对该随机值进行加密。就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5. 传送加密信息:
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6. 服务段解密信息:
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。
所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7. 传输加密后的信息:

  这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8. 客户端解密信息:
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。


TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。


ssl证书由受信任的数字证书颁发机构CA(如沃通WoSign),在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。
分为扩展验证型EV ssl证书、组织验证型OV ssl证书、和域名验证型DV ssl证书。


organization
英[ˌɔ:gənaɪˈzeɪʃn]
美[ˌɔ:rgənəˈzeɪʃn]
n.    组织; 机构; 团体;
adj.    有组织的;
[例句]Most of these specialized schools are provided by voluntary organizations.
这些专业学校大多由志愿组织建立。
[其他]    复数:organizations

validated
v.    证实( validate的过去式和过去分词 ); 确证; 使生效; 使有法律效力;
[例句]This model has been validated with the cadaver test results.
根据已有的尸体实验结果,验证了模型的可靠性。


无论你用 DV 还是 OV 生成私钥,都需要填写一些基本信息,这里我们假设如下:
域名,也称为 Common Name,因为特殊的证书不一定是域名:example.com
组织或公司名字(Organization):Example, Inc.
部门(Department):可以不填写,这里我们写Web Security
城市(City):Beijing
省份(State / Province):Beijing
国家(Country):CN
加密强度:2048 位,如果你的机器性能强劲,也可以选择 4096 位
按照以上信息,使用 OpenSSL 生成 key 和 csr 的命令如下
[root@ok sh]# file MyDomain.com.key MyDomain.com.csr
MyDomain.com.key: ASCII text
MyDomain.com.csr: ASCII text
[root@ok sh]# cat MyDomain.com.csr
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaWppbmcxEDAO
BgNVBAcMB0JlaWppbmcxFjAUBgNVBAoMDU15RG9tYWluIEluYy4xFTATBgNVBAsM
DFdlYiBTZWN1cml0eTEVMBMGA1UEAwwMTXlEb21haW4uY29tMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEArQ1cO7lMe+VyO4M31rNKidSS2ZpYM/G2ZP9M
W7iBbpAmt24ID2lN1ePQAD1/hpKK0tktnNfSmE8D4B7wKycsuvfYA9ckjdXSntzm
guAXso+H0bapdJr3tdvkDk6qN43qdRoiaIiJFaufVqNlF08huvscM7mIoZDYtXKw
y73Z2NRQJZqTsOU2oP1EO61QgXJ4Bl25Y4sruKdgnVjtRTV6qhNSrdKAT5D3vP7N
0oGdaWK5sAyYmBZRrXAhCjHnZCaQ3b256dceRKdQDR9186NB5Bp2PuVhAqMb4q2Y
DAzYyOjZcSGloaF9gyUb6F/ZLLYBcN+7aQ58sLMoQj05Y+bPhQIDAQABoAAwDQYJ
KoZIhvcNAQELBQADggEBAJUklKa8voMxKVZv7m3jtUfu0tInbpr//cY5MdCHhUQb
+9RxiJ3BS8GRUv5r16kuqg8uYnddM98StFl8zYYqIcpS7D7K1pdT3pekP3Ste8SO
HsCGwSOjIhUDaeuKPwDc9U/J2PStlPt3msePP8MUo0f89hV1Blb13lKtI0jVenqR
lVRFcDhVZNbdaDJtQ3qsPszBhRtg0wgYnXKKMrvcf70fcgY3R9E5luDWtgPOM5ID
PhqR1I6nyp6vLMYe5dwV1jAr0z4Gxrn4voC5nu8Ys9McQ4lvj74AwcuiOIyOToWo
MTQTRPuj+sV/DRJ9lYgCLB9998EpPhGGdPpAE4uh7ic=
-----END CERTIFICATE REQUEST-----
#这个 CSR 文件就是你需要提交给 SSL 认证机构的,当你的域名或组织通过验证后,认证机构就会颁发给你一个 MyDomain.com.crt
而MyDomain.com.key是需要用在 Nginx 配置里和MyDomain.com.crt配合使用的,需要好好保管,千万别泄露给任何第三方。


【ssl证书申请的3个主要步骤】


 1、制作CSR文件

  所谓CSR就是由申请人制作的Certificate Secure Request证书请求文件。制作过程中,系统会产生2个密钥,一个是公钥就是这个CSR文件,另外一个是私钥,存放在服务器上。
要制作CSR文件,申请人可以参考WEB SERVER的文档,一般APACHE等,使用OPENssl命令行来生成KEY+CSR2个文件,Tomcat,JBoss,Resin等使用KEYTOOL来生成JKS和CSR文件,
IIS通过向导建立一个挂起的请求和一个CSR文件。

  2、CA认证

  将CSR提交给CA,CA一般有2种认证方式:

  1)域名认证:一般通过对管理员邮箱认证的方式,这种方式认证速度快,但是签发的证书中没有企业的名称;

  2)企业文档认证:需要提供企业的营业执照。

  也有需要同时认证以上2种方式的证书,叫EV ssl证书,这种证书可以使IE7以上的浏览器地址栏变成绿色,所以认证也最严格。

  3、证书安装

  在收到CA的证书后,可以将证书部署上服务器,一般APACHE文件直接将KEY+CER复制到文件上,然后修改httpD.CONF文件;TOMCAT等,
需要将CA签发的证书CER文件导入JKS文件后,复制上服务器,然后修改SERVER.XML;IIS需要处理挂起的请求,将CER文件导入。

  使用ssl证书不仅能让信息的安全性更有保障,还可以提高用户对于网站的信任度。但鉴于对建站成本的考虑,很多站长对其望而却步。
在网络上免费始终是一个永远不过时的市场,主机空间有免费的,而ssl证书自然也有免费的,
此前,便有消息称,Mozilla、思科、Akamai、IdenTrust、EFF、以及密歇根大学的研究人员将开启Let’s Encrypt CA项目,计划从今夏开始,
为网站提供免费ssl证书以及证书管理服务(注:如需更高级的复杂证书,则需付费)。另外,沃通wosign目前已经推出了3年期的多域名免费ssl证书,
证书到期后可以免费续期,支持绑定多个域名、支持证书状态在线查询协议(OCSP)、支持中文、全球浏览器信任,任何个人都可以从沃通CA申请到免费的ssl证书,只要你有网站。

  而需要高级别ssl 证书的往往是大中型网站,如网上银行、购物网站、金融证券、政府机构等,诸如个人博客之类的小型站点完全可以先尝试免费ssl证书。

  从商业机构到政府部门再到个人家庭,越来越多的用户使用网络来处理事务,交流信息和进行交易活动,这些都不可避免地涉及到网络安全问题,
尤其是认证和加密问题。特别是在网上进行购物交易活动中,必须保证交易双方能够互相确认身份,安全地传输敏感信息,事后不能否认交易行为,同时还要防止他人截获篡改宝贵信息或假冒交易方。
那么,我们该如何提高站点信息的安全性呢?目前最简单的解决方案就是利用ssl安全技术来实现WEB的安全访问。


http=http(应用)+tcp+ip
https=http(应用)+(ssl or tls)+tcp+ip


https://s.how/nginx-ssl/


TLS/SSL 全称安全传输层协议 Transport Layer Security, 是介于 TCP 和 HTTP 之间的一层安全协议,
不影响原有的 TCP 协议和 HTTP 协议,所以使用 HTTPS 基本上不需要对 HTTP 页面进行太多的改造。




TLS/SSL 原理:

HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议
TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,
对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。




在信息传输过程中,散列函数不能单独实现信息防篡改,因为明文传输,中间人可以修改信息之后重新计算信息摘要,因此需要对传输的信息以及信息摘要进行加密;
对称加密的优势是信息传输1对1,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和 N 个客户端通信,需要维持 N 个密码记录,且缺少修改密码的机制;
非对称加密的特点是信息传输1对多,服务器只需要维持一个私钥就能够和多个客户端进行加密通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密速度慢。

  结合三类算法的特点,TLS 的基本工作方式是,客户端使用非对称加密与服务器进行通信,实现身份验证并协商对称加密使用的密钥,
然后对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,不同的节点之间采用的对称密钥不同,从而可以保证信息只能通信双方获取。


中间人攻击:PKI 体系 3.1 RSA 身份验证的隐患

散列函数 Hash,常见的有 MD5、SHA1、SHA256,该类函数特点是函数单向不可逆、对输入非常敏感、输出长度固定,
针对数据的任何修改都会改变散列函数的结果,用于防止信息篡改并验证数据的完整性;


对称加密,常见的有 AES-CBC、DES、3DES、AES-GCM等,相同的密钥可以用于信息的加密和解密,掌握密钥才能获取信息,能够防止信息窃听,通信方式是1对1


非对称加密,即常见的 RSA 算法,还包括 ECC、DH 等算法,算法特点是,密钥成对出现,一般称为公钥(公开)和私钥(保密),公钥加密的信息只能私钥解开,私钥加密的信息只能公钥解开。
因此掌握公钥的不同客户端之间不能互相解密信息,只能和掌握私钥的服务器进行加密通信,服务器可以实现1对多的通信,客户端也可以用来验证掌握私钥的服务器身份。(服务器端生成一个私钥和一个
公钥,然后把公钥分发给不同的客户端,实现一对多)


在信息传输过程中,散列函数不能单独实现信息防篡改,因为明文传输,中间人可以修改信息之后重新计算信息摘要,因此需要对传输的信息以及信息摘要进行加密;
对称加密的优势是信息传输1对1,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和 N 个客户端通信,需要维持 N 个密码记录,且缺少修改密码的机制;
非对称加密的特点是信息传输1对多,服务器只需要维持一个私钥就能够和多个客户端进行加密通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密速度慢。


结合三类算法的特点,TLS 的基本工作方式是,客户端使用“非对称加密“与服务器进行通信,实现身份验证并协商“对称加密使用的密钥“,然后对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,
不同的节点之间采用的对称密钥不同,从而可以保证信息只能通信双方获取。


身份验证和密钥协商是 TLS 的基础功能,要求的前提是合法的服务器掌握着对应的私钥。
RSA 算法(常见的非对称加密算法)无法确保服务器身份的合法性,因为公钥并不包含服务器的信息,存在安全隐患:
客户端 C 和服务器 S 进行通信,中间节点 M 截获了二者的通信;

  节点 M 自己计算产生一对公钥 pub_M 和私钥 pri_M;

  C 向 S 请求公钥时,M 把自己的公钥 pub_M 发给了 C;

  C 使用公钥 pub_M 加密的数据能够被 M 解密,因为 M 掌握对应的私钥 pri_M,而 C 无法根据公钥信息判断服务器的身份,从而 C 和 M 之间建立了”可信”加密连接;

  中间节点 M 和服务器S之间再建立合法的连接,因此 C 和 S 之间通信被M完全掌握,M 可以进行信息的窃听、篡改等操作。

  另外,服务器也可以对自己的发出的信息进行否认,不承认相关信息是自己发出。

  因此该方案下至少存在两类问题:中间人攻击和信息抵赖。




解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,
为此需要引入权威的第三方机构 CA。CA 负责核实公钥的拥有者的信息,并颁发认证”证书”,
同时能够为使用者提供证书验证服务,即 PKI 体系。


基本的原理为,CA 负责审核信息,然后对关键信息利用私钥进行”签名”,公开对应的公钥,客户端可以利用公钥验证签名。
CA 也可以吊销已经签发的证书,基本的方式包括两类 CRL 文件和 OCSP。CA 使用具体的流程如下:



http://www.xueliedu.com/a/xinwenzixun/2016/0106/473122.html
在这个过程注意几点:

  a.申请证书不需要提供私钥,确保私钥永远只能服务器掌握;

  b.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名;

  c.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书;

  d.证书=公钥+申请者与颁发者信息+签名;


证书链:

  a.服务器证书 server.pem 的签发者为中间证书机构 inter,inter 根据证书 inter.pem 验证 server.pem 确实为自己签发的有效证书;

  b.中间证书 inter.pem 的签发 CA 为 root,root 根据证书 root.pem 验证 inter.pem 为自己签发的合法证书;

  c.客户端内置信任 CA 的 root.pem 证书,因此服务器证书 server.pem 的被信任。




  服务器证书、中间证书与根证书在一起组合成一条合法的证书链,证书链的验证是自下而上的信任传递的过程。


二级证书结构存在的优势:

  a.减少根证书结构的管理工作量,可以更高效的进行证书的审核与签发;

  b.根证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救;

  c.中间证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书;

  d.证书链四级以内一般不会对 HTTPS 的性能造成明显影响。




二级证书结构存在的优势:

  a.减少根证书结构的管理工作量,可以更高效的进行证书的审核与签发;

  b.根证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救;

  c.中间证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书;

  d.证书链四级以内一般不会对 HTTPS 的性能造成明显影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: