1. HTTPS
1.1. 什么是HTTPS
HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP。HTTPS的安全基础是安全套接层(Secure Sockets Layer,SSL)。HTTP工作在应用层(OSI模型的最高层),SSL协议工作在一个较低的子层,位于TCP/IP协议和HTTP协议之间。在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是工作在SSL协议上的HTTP协议。
TLS对SSL进行了扩充,是SSL的继任者,但两者区别不大,以下讨论中不对TLS和SSL做严格区分。
HTTPS主要作用有两种:(1)确认通讯双方的身份,(2)建立安全通道,保证数据传输安全。1.2. HTTPS的主要作用
1.2.1. 确认通讯双方的身份
HTTPS通讯中,通过签名技术通讯双方可以确认对方身份。身份认证分为单向认证和双向认证。单向认证中只有服务器端有证书,双向认证中服务器和客户端都有证书。一般的HTTPS站点只有服务器有证书,而客户端无证书。
单向认证是双向认证的简化版,本文讨论过程中如无特殊说明都认为是双向认证。
1.2.2. 建立安全通道,保证数据传输安全
基于SSL协议通讯双方可以协商一个用于对称加密的密钥,该密钥是一个难以破解的随机数,而且依赖通讯双方的证书、私钥等来协商。密钥协商好后,通讯双方用该密钥对数据进行加解密,从而保证数据安全。
1.3. HTTPS与HTTP协议的差异
(1). HTTP 的URL是以“http://”开始,HTTPS的URL是以“https://”开始;
(2). HTTP默认端口为80,HTTPS的默认端口为443;
(3). 采用HTTPS的Web Server需要到CA申请证书;
(4). HTTPS由HTTP+SSL来实现,可进行加密传输、身份认证等,要比HTTP安全
(5). HTTP的信息是明文传输,而HTTPS的信息是加密传输
2. 公开密钥加密
2.1. 什么是公开密钥加密?
公开密钥加密也称非对称密钥加密,该加密算法使用两个不同的密钥:加密密钥和解密密钥。前者公开,又称公开密钥,简称公钥;后者保密,又称私有密钥,简称私钥。这两个密钥是数学相关的,用某用户加密密钥加密后所得的信息只能用该用户的解密密钥才能解密。RSA算法(由发明者Rivest,Shmir和Adleman姓氏首字母缩写而来)是著名的公开密钥加密算法。
公钥加密的另一用途是身份验证:用私钥加密的信息,可以用公钥对其解密,接收者由此可知这条信息确实来自于拥有私钥的某人。私钥加密的过程即数字签名。
用公钥加密的数据只有私钥才能解密;相反的,用私钥加密的数据只有公钥才能解密,正是这种不对称性才使得公用密钥密码系统被广泛应用。
2.2. 优点
与对称密钥加密相比,优点在于无需共享的通用密钥,解密的私钥不发往任何用户。即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,所截获的公钥是没有任何用处的。
2.3. 过程
假设两个用户A,B进行通信,公钥为c,私钥为d,明文为x.
Step 1. A用公钥对明文进行加密形成密文c(x),然后传输密文;
Step 2. B收到密文,用私钥对密文进行解密d(c(x)),得到要通信的明文
2.4. 对称密钥加密
对称密钥加密又叫专用密钥加密,即发送和接收数据的双方必须使用相同的密钥对明文进行加密和解密运算。
3. 数字证书和CA
3.1. 确认主机的真实性
采用https 的server(服务器)必须从CA (CertificateAuthority)申请一个用于证明服务器用途类型的数字证书(或者叫CA证书). 该证书只有用于对应的server 时,客户端才信任此主机.
CA(Certificate Authority)即"认证机构",是负责签发证书、认证证书、管理已颁发证书的机构,是PKI(Public Key Infrastructure,公钥基础设施)的核心。它要制定政策和具体步骤来验证、识别用户身份,并对用户证书进行签名,以确保证书持有者的身份和公钥的拥有权。
CA 也拥有一个证书(内含公钥)和私钥。网上的公众用户通过验证 CA 的签字从而信任CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。
3.2. 什么是数字证书
数字证书(CA证书是经过认证的数字证书)是一个用于互联网通讯中认证身份的工具,由权威机构——CA机构(Certificate Authority)发行。其作用类似于司机的驾驶执照和公民身份证。CA作为公正的第三方来确保证书的有效性[6]。全国存在多个CA机构(只要你有公信力你也可以成立一家CA机构)。
数字证书包含一个公钥以及该密钥所有者的信息。证书还标明有有效期,并通过另一密钥(CA私钥)进行签名,<