大厂面试:HTTPS三连问,最后一问难道很多人

什么是HTTPS?
HTTPS(Hyper Text Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议,在互联网中,信息是以明文形式传输的,这就存在着被窃取和篡改的风险,HTTPS就是为了解决这个问题而诞生的,它通过使用SSL/TLS协议来加密数据,使得数据在传输过程中即使被第三方截获,也无法被解读。
HTTPS是如何保证安全的?
HTTPS的安全性主要依赖于SSL/TLS协议,这是一种公认的网络安全标准,由网景公司(Netscape)开发并开源,现在由IETF进行维护。
1. 证书颁发机构(CA)

在建立HTTPS连接时,客户端会向服务器发送请求,要求服务器提供一个SSL/TLS证书,这个证书是由一个叫做证书颁发机构(CA)的实体颁发的,CA会对申请者的身份进行验证,确认其是实际的组织或个体后,才会颁发证书。
2. SSL/TLS握手过程
当客户端收到服务器的证书后,会进行SSL/TLS握手过程,在这个过程中,客户端会从服务器那里获取一个公钥,然后使用这个公钥来加密一个随机生成的对称密钥,然后将这个对称密钥发送给服务器,服务器收到后,会用自己的私钥对这个对称密钥进行解密,得到一个新的对称密钥,之后的所有通信,都会使用这个新的对称密钥进行加密和解密。

3. 数据传输保护
在SSL/TLS握手过程完成后,客户端和服务器就可以开始使用这个新的对称密钥进行数据的加密和解密了,由于这个过程是对称的,所以即使数据被第三方截获,也无法被解读。
HTTPS的主要应用场景是什么?
HTTPS的应用非常广泛,几乎所有需要安全通信的场景都离不开它,以下是一些主要的应用场景:
1. 网上购物
在网上购物时,我们通常需要输入我们的信用卡信息,如果这些信息在传输过程中被第三方截获,就可能会造成财产损失,大多数在线商店都提供了HTTPS选项,以保护消费者的信息安全。
2. 网银操作
在进行网银操作时,我们也需要提供一些敏感信息,如用户名、密码等,同样,为了保护这些信息的安全,网银系统也通常会使用HTTPS。
3. 内部网络通信
对于企业内部的网络通信,也需要保证数据的安全,员工可能需要通过电子邮件或者即时通讯工具与外部的客户或者合作伙伴进行沟通,为了保证这些通信的安全,企业也会采用HTTPS。
如何实现一个简单的HTTPS服务器?
实现一个简单的HTTPS服务器并不复杂,只需要以下几个步骤:
1、生成证书和私钥:可以使用OpenSSL工具生成自签名证书和私钥,命令如下:openssl req -new -x509 -keyout key.pem -out cert.pem -days 365。key.pem是私钥文件,cert.pem是证书文件,运行这个命令后,OpenSSL会提示你输入一些信息,如国家、省份、城市、组织名称等,这些信息将被包含在证书中。
2、启动服务器:可以使用任何你喜欢的编程语言来启动服务器,以下是一个使用Python的简单示例:
import http.server, ssl, socketserver
httpd = socketserver.TCPServer(("", 443), http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket (httpd.socket, certfile='cert.pem', server_side=True)
httpd.serve_forever()
在这个示例中,我们首先创建了一个TCP服务器,监听443端口(这是HTTPS默认的端口),我们使用ssl.wrap_socket函数将服务器的套接字包装成一个SSL套接字,我们调用serve_forever函数来启动服务器。