我正在使用 Apache 和 OpenSSL 测试 SSL 不安全的重新协商漏洞。
当针对 OpenSSL 0.9.8k 编译 Apache 2.2.14 时,openssl 命令可以与 Apache 建立客户端发起的不安全 SSL 重新协商,如下所示:
# /usr/local/openssl-0.9.8k/bin/openssl s_client -connect debian:443
[...]
HEAD / HTTP/1.0
R
RENEGOTIATING
depth=0 /C=UA/ST=Some-State/O=Alice Cruel Ltd/CN=strawberry.xxx
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=UA/ST=Some-State/O=Alice Cruel Ltd/CN=strawberry.xxx
verify return:1
HTTP/1.1 200 OK
Date: Thu, 23 Jan 2014 13:54:33 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8k
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "1b006b0-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
closed
#
但是使用针对 OpenSSL 0.9.8m 编译的 Apache 2.2.15,即使在 ssl.conf 中添加了“SSLInsecureRenegotiation on”,客户端发起的 SSL 重新协商也会失败:
# /usr/local/openssl-0.9.8k/bin/openssl s_client -connect debian:443
CONNECTED(00000003)
[...]
HEAD / HTTP/1.0
R
RENEGOTIATING
4790:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:530:
#
后者的结果似乎出乎意料。SSLInsecureRenegotiation 指令不起作用吗?我想知道如何使指令生效。
先感谢您。