https理论及实践

148 阅读5分钟
原文链接: www.toutiao.com

什么是https协议?

http协议以明文的方式在网络中传输,安全性难以保证,https在http协议的基础上加入SSL/TLS层。TLS是SSL协议的最新版本,SSL使用SSL数字证书在通信两端建立加密链路,对两端通信数据进行加密,从而保证通信数据安全。

http和https协议比较如下:

https理论及实践

SSL协议工作原理

SSL协议主要涉及非对称加密和对称加密技术。

非对称加密,使用一对密钥加解密数据,公钥(public key)对外公开,私钥自己保留(private key)。使用私钥加密的数据只有对应的公钥才能解密。SSL使用非对称加密进行通信初始化(SSL handshake),非对称加密算法包括RSA,、DSA、PKCS等。

https理论及实践

对称加密,加解密都用同一个key。SSL在通信初始化(handshake)后,用session key进行对称加密通信。对称加密算法包括AES-128, AES-192 and AES-256。

https理论及实践

SSL协议通信包括两个阶段:SSL handshake和数据传输。SSL handshake阶段使用非对称加密,数据传输阶段使用对称加密。

https理论及实践

SSL handshake包含以下步骤:

https理论及实践

1. 客户端发送"client hello"消息,这条消息中包含客户端SSL版本以及其它服务端需要的信息。

2. 服务端回复"server hello"消息,这条消息包含服务端SSL版本,包含public key的SSL数字证书及其它信息。

3. 客户端发送请求给CA(Certificate Authority,证书颁发机构)对服务端进行身份验证。验证失败则拒绝建立SSL连接,否则继续4.

4. 客户端生成session key,用服务端的public key加密,并发送给服务端。假如服务端也要求验证客户端,客户端也需要发送自己的证书(一般是server之间的通信需要)。

5. 服务端用自己的private key解密出session key,并用session key加密发送确认消息。

数据传输阶段如下,用SSL handshake阶段生成的session key对数据进行对称加密通信。和非对称加密相比,对称加密简单、加解密速度会更快。

https理论及实践

SSL证书

SSL证书是由CA机构颁发的含服务端public key及其它信息的数据文件。比如google的数字证书如下,可以点击详细信息查看更多证书内容。

https理论及实践

https理论及实践

数字证书由X.509标准定义,X.509使用Abstract Syntax Notation One (ASN.1)标记去表示数字证书结构。数字证书一般包含下面这些域。

https理论及实践

SSL证书基于验证级别和认证domain数可分为不同类型,基于验证级别可分为Domain Validated Certificates(DV,域名型)、Organization Validated Certificates(OV,企业型)、Extended Validated Certificates(EV,企业增强型)。域名型证书用于验证单个域名,企业型证书可验证某域名下的所有子域名,比如*.killianxu.cn,企业增强型证书可用于验证不相关的多个相关域名。基于domain数可分为Single Domain Certificate、Wildcard SSL Certificate和Unified SSL Certificate /Multi-Domain SSL Certificate/SAN Certificate。

获取SSL证书

SSL证书可以从CA机构购买或者从免费CA机构获取。在申请证书时可能需要提交Certificate Signing Request (CSR)。CSR是由openssl等SSL tools工具或服务器生成的Base64编码文本。内含公钥、域名、组织、地址等信息,CA机构颁发的证书中就包含CSR中的公钥信息。CSR文本由-----BEGIN NEW CERTIFICATE REQUEST-----"开始,并由"-----END NEW CERTIFICATE REQUEST-----结束,CSR格式如下:

https理论及实践

可在线生成CSR和private key两个文件。

https理论及实践

生成csr文件后,可申请免费DV类型SSL证书。

腾讯云可免费申请域名验证级别的SSL证书,生成证书过程自动生成CSR。

https理论及实践

https理论及实践

生成的证书可下载安装到server。SSL证书有不同的格式,PEM和PKCS#7使用Base64编码,DER和 PKCS#12使用二进制编码。

https理论及实践

腾讯云申请的证书如下,其中包含了适用于几种主流服务器的证书格式,其中www.killianxu.cn.csr为自动生成的CSR文件。

https理论及实践

安装SSL证书

每种服务器证书安装方法都不一样,本文讲解在tomcat上的安装。在安装前若证书格式和服务器支持的证书格式不一样,需要利用OpenSSL转换。

在tomcat安装路径下conf/server.xml增加如下SSL/TLS配置,支持https:

https理论及实践


<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/www.killianxu.cn.jks" certificateKeystorePassword="d62spdpc5se3an" certificateKeyAlias="www.killianxu.cn"
type="RSA" />
</SSLHostConfig>
</Connector>

强制所有的http访问重定向到https,在conf/web.xml的结束标签web-app强增加配置:

https理论及实践


<login-config> 
 <!-- Authorization setting for SSL --> 
 <auth-method>CLIENT-CERT</auth-method> 
 <realm-name>Client Cert Users-only Area</realm-name> 
</login-config> 
<security-constraint> 
 <!-- Authorization setting for SSL --> 
 <web-resource-collection > 
 <web-resource-name >SSL</web-resource-name> 
 <url-pattern>/*</url-pattern> 
 </web-resource-collection> 
 <user-data-constraint> 
 <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
 </user-data-constraint> 
</security-constraint> 

重启tomcat

验证证书安装成功

输入:curl -v https://www.killianxu.cn:8443/test.html

https理论及实践

可看到1部分获取到SSL证书信息,2部分获取网页数据

输入:curl -v http://www.killianxu.cn:9999/test.html

https理论及实践

http协议收到302重定向状态码,并有Location重定向新路径

参考文献

https://www.tutorialsteacher.com/https

https://yevon-cn.github.io/2017/04/09/https-config-of-tomcat.html

原文:https://www.cnblogs.com/killianxu/p/11367691.html

声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。