一、实验目的和要求
掌握Apache配置并搭建网站;利用OpenSSL生成数字证书,掌握在Linux平台下使用Apache、OpenSSL组合实现浏览器、Web服务器之间的安全通信,通过解析报文分析SSL协议工作原理。
二、实验步骤
1.Openssl、apche实现SSL通信
1、启动Apahce并测试,浏览器访问http://KaliIP,显示默认网页,如下图所示。理解Apache主配置文件、服务器Web站点的默认目录及默认首页。
2、本实验中,Kali生成一个服务器证书应用于Apache,用于实现和客户端间的SSL安全传输。以下步骤针对Kail Linux版本,kali的apache2中是以模块的形式加载SSL。
(1)生成RSA私钥;
openssl genrsa -out server.key 2048
genrsa 生成RSA密钥;-out 密钥输出到文件;
(2)创建证书签名请求文件csr(Certificate Signing Request);
openssl req -new -key server.key -out server.csr
req是OpenSSL的标准命令,用于PKCS#10 X.509证书请求与生成;选项new生成新的证书请求;
key指明了server私钥;
运行上面的命令后,接下来会要求输入一系列的证书请求信息(可根据实际情况输入),这些信息填入证书;
(3)对证书进行签名,生成最终证书;
openssl x509 -req -days 365 -in server.csr -signkey server.key -out serer.crt
x509 : X.509 格式
-req : 请求对证书进行签名;
-days :有效期;
-in : 需要签名的证书;
-signkey :证书签名用到的私钥;
-out : 输出签名证书。
(4)证书等放入相关目录。
以上步骤完成了一个自签名的证书,该证书用于apche服务器。
3、kali Linux下为Apache2配置SSL证书
(1)修改配置文件;
修改 /etc/apache2/sites-available/default-ssl配置文件,以下两个密钥和证书文件指向步骤2.4确定的路径和文件。
SSLCertificateFile # 证书路径配置
SSLCertificateKeyFile # 证书私钥路径配置
(2)启动SSL模块;
a2enmod ssl
(3)启用配置;
a2ensite default-ssl
(4)重启apache服务。
4、测试。
(1)搭建需要客户端输入数据的网站(只需一个提交页面即可,自行编写)。如下图所示。
- 客户端URL中以http访问网站,wireshark捕获数据,分析客户端和服务器间是否以明文传输。截图。
客户端和服务器间以明文方式存储。
- 客户端URL中以https访问网站,wireshark捕获数据,分析客户端和服务器间是否以明文传输。
客户端和服务器间以密文方式存储。
- 客户端查看服务器证书,分析与步骤2.3生成的证书一致与否。
一致。
Wireshark捕获数据,分析4.3步骤的SSL报文,理解SSL协议过程,描述SSL协议握手过程。
客户端向服务器发送client hello,包括支持的TLS协议版本、客户端随机数、会话ID、加密套件等。
服务器回复server hello,内涵版本号、服务器随机数、会话ID、加密套件等。
服务器发送Certificate证书以便客户端认证其身份,发送密钥交换请求,发送证书请求客户端进行身份验证,Change Cipher Spec编码改变通知,表示随后的信息将用双方商定的加密算法和和密钥发送(ChangeCipherSpec是一个独立的协议,体现在数据包中就是一个字节的数据,用于告知服务端,客户端已经切换到之前协商好的加密套件(Cipher Suite)的状态,准备使用之前协商好的加密套件加密数据并传输了),发送握手完成标志。
客户端发送Change Cipher Spe,发送证书未知的描述。