赵 凯
北京电子科技职业学院 北京 100176
HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer)即带有安全套接字的超文本传输协议,是在HTTP协议的基础上增加了SSL/TLS协议,是一种安全可靠的应用层传输协议。HTTPS协议的主要作用是对数据进行加密并建立一个信息安全通道,从而保证传输过程中的数据安全,同时实现对服务器身份的认证,该功能的实现依赖于SSL/TLS协议[1]。SSL/TLS协议中有3种基本的算法分别是实现身份认证和密钥协商的非对称加密算法、加密数据用的对称算法以及保证信息完整性的散列(HASH)函数。SSL协议通过数字证书的形式保证数据的安全性,SSL证书由CA发放,SSL通讯由客户端发起,而HTTPS协议的安全应用是SSL证书的一种表现形式,可以简单地理解HTTPS协议是HTTP协议与SSL协议的结合,使用HTTPS协议可以有效地降低信息被窃听、信息被篡改和信息被劫持的风险[2]。
CA(Certificate Authority)即电子证书的认证机构,是PKI体系中的重要一环,负责电子证书的发放及管理等工作,使用数字证书的方式实现对网络中用户数据的确认[3]。证书的内容包括电子签证机关的信息、公钥用户的信息、公钥、数字签名及有效期等。目前,证书的格式和验证方法普遍遵循X.509 国际标准,该标准由国际电联ITU定义。作为通信双方都信任的实体,其本身具有非否认性,它可以提供在网上进行身份认证的一种权威性的电子文档证明通信双方的身份,是网络中常用的一种身份认证方法[4,5]。
每个数字证书持有者都有一对互相匹配的密钥对即公钥(Public Key)和私钥(Private Key)。公钥是对外公开的,用于加密和验证数字签名;证书拥有者掌握私钥,用于解密信息摘要和数字签名。以数字证书为核心的加密传输、数字签名、信息摘要等安全技术可以实现网络上用户身份的真实性、信息传输的机密性、完整性以及交易的不可抵赖性,从而保障网络应用的安全性[6]。
假设公司A向公司B传送信息,为了保证所传送信息的真实性、完整性和不可否认性,需要对传送的信息进行数字加密和数字签名(如图1所示)。
图1 CA认证
具体过程描述如下。
(1)公司A准备好明文,即要发送的信息。
(2)公司A对准备发送的信息进行哈希(HASH)运算(一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,常见的HASH算法有MD5和SHA),从而生成一个信息摘要。
(3)公司A用自己的私钥对信息摘要进行加密得到公司A的数字签名并将签名附加到数字信息上。
(4)公司A随机产生一个使用DES算法(对称加密算法,此处也可以使用IDEA,AES等算法对数据进行加密、解密操作)加密的密钥,使用此密钥对要发送的信息进行加密,即生成密文。
(5)公司A使用共有的公钥对随机产生的DES密钥进行加密,并将加密后的密钥同密文一起发送给公司B。
(6)公司B收到公司A发送过来的DES密钥及密文,先用自己的私钥对加密的DES密钥解密,得到DES密钥。
(7)公司B用得到的DES密钥对收到的密文进行解密,得到明文的数字信息,此时DES密钥失效。
(8)公司B用双方都有的公钥对公司A的数字签名进行解密,得到信息摘要。
(9)公司B用相同的HASH算法对收到的明文再进行一次HASH运算,得到一个新的信息摘要。
(10)公司B将收到的信息摘要与新生成的信息摘要进行比较,如一致则说明收到的信息是可靠的,即没有被修改过。
本例中使用SSL协议实现CA的认证,客户机通过下载安装服务器中提供的CA证书实现数据的安装访问,拓扑简图如图2所示。
图2 网络拓扑简图
服务器所需要的软件见表1。
表1 软件信息表
各设备的地址信息见表2。
表2 角色信息表
在客户端中使用HTTPS协议访问WWW服务器,WWW服务使用虚拟主机实现,通过预先设置好的CA证书、私钥等信息在客户端和WWW服务器之间建立安全的连接。
3.1.1 设置CA证书中的相关信息
CA证书中的相关信息记录在/etc/pki/tls/openssl.cnf文件中,如证书文件名及私钥文件名等内容如下:
3.1.2 创建证书的私钥文件,使用rsa算法进行加密
3.1.3 根据私钥文件创建CA的证书文件
此时会在/etc/pki/CA文件夹中生成证书文件cacert.pem,“[]”的值来源于/etc/pki/tls/openssl.cnf中的设置。为了提高安全性,修改CA证书及私钥文件的权限,操作如下:
3.1.4 在/etc/httpd/certs文件夹下生成WWW服务器的私钥及请求文件
3.1.5 为WWW服务器颁发证书并指定相关信息
首先需要在/etc/pki/CA文件夹中创建数据库索引文件index.txt和序号文件serial,并在serial文件中设置初始序号为01,这2个文件在生成CA服务器颁发的证书时会用到。然后在certs文件夹中执行[root@master certs]# openssl ca -in www.csr -out www.crt,生成所颁发的证书文件www.crt并注册证书的有效期,默认为1年。
修改/etc/httpd/certs文件夹中的文件权限,结果如下:
修改vim /etc/httpd/conf.d/ssl.conf,指定WWW服务器的证书及私钥位置:
使用Firefox浏览器进行测试,在地址栏中输入https//www.dianxin.bjedu.cn,www.dianxin.bjedu.cn是与192.168.1.10所对应的域名,结果如图3所示。
图3 访问HTTPS站点
点击“添加例外”(如图4所示),获取证书(如图5所示)。
图4 添加例外
图5 证书内容
操作结果如图6所示。
图6 操作成功的界面
针对HTTP应用的安全问题,本文引入了HTTPS协议,可以理解HTTPS协议为HTTP协议和SSL协议的结合,SSL是一个安全协议,通过使用数据加密、身份验证和消息完整性验证机制提供可靠的安全连接保障。而SSL作为一种常用的CA认证方式使得访问变得更加可靠,文中从CA认证的原理及工作流程等方面进行了阐述,并在RedHat系统中成功地部署了基于CA认证的Web站点,实现了client与Web Server之间的安全访问。