测试Apache使用Openssl及修改Openssl加密算法执行顺序

测试背景说明:

HTTPs和SSH等协议内部使用Openssl协议,Openssl在客户端和服务器做握手时,会协商一个双方都支持的算法。通过Openssl的Ciphers命令,可以看到Openssl支持的算法列表。原理上Ciphers列表中的算法在协商时是有优先级的。例如客户端在发送Hello握手消息时,会传送client支持的SSL协议的版本号、随机数、加密算法列表,以及所需的其他信息。服务器收到客户端建立SSL连接的请求后,会发送Server Hello消息向客户端传送SSL协议的版本号、随机数、会话ID、加密算法的种类等信息。之后,进入认证阶段。认证阶段我们这里测试时不关注。我们测试关注的是Client和服务端在协商加密算法时,是否通过Ciphers中算法列表顺序做优先级来匹配第一个双方都匹配的算法。以下是测试过程。

搭建环境:

1.生成证书

2.将生成的证书和私钥拷贝到/usr/local/apache2/conf/下

3.修改Apache配置文件,打开SSL模块

4.修改extra/ssl.conf文件

5.修改extra/httpd-vhosts.conf

6.重启apache,环境搭建完成。

测试:

1.通过IE打开:https://192.168.44.25:8443,按F12查看页面执行情况,可以看到使用了TLS1.2协议,使用ECDH_RSAwith P-256密钥交换算法,使用AES_256_GCM为分组加密算法。

2.修改配置文件extra/ssl.conf,相当于修改服务端的Ciphers列表顺序

3.重启apache

4.关闭页面,清理缓存,再打开googlechrome检测:https://192.168.44.20,发现使用的加密算法没有改变。

5.修改服务端的CipherOrder并没有引起加密算法的改变,我们来修改客户端的加密算法测试一下。

6.命令行输入“gpedit.msc”打开组策略,点击“管理模板”->“网络”->“SSL配置”,找到“SSL密码套件顺序”。默认未配置。将配置改为已启用。点击“应用”

7.关闭goolechrome,重新打开google浏览器。

8.发现使用的算法没有改变。

9.再次修改“SSL密码套件顺序”,将“TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256”复制到密码套件的最后,去掉了几个排名靠后的算法。

10.重新打开google Chrome浏览器,还是一样的算法。来点小插曲,测试过程中,正好在播放时界杯,阿根廷对法国,Google浏览器播放世界杯正常。

11.修改算法之后半小时,电脑上看世界杯显示如下界面:

13.再次,使用google浏览器打开页面测试。算法还是没有变化。

14.恢复“SSL密码套件顺序”为默认配置,世界杯播放正常,说明修改“SSL密码套件算法”还是影响了SSL传输和认证。

测试结论:

本次测试从结果上看应该是失败的,跟原理上Ciphers顺序会引起协商的加密算法的改变不一致。可能是我对这一块设置及算法的理解还不透彻造成的。先记录下来,以后,再理解清楚了,再做测试。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180701G0LHEN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券