poundをPOODLE対応してみた(らoptionが追加されていた話)
poundって何よ
L7のソフトウェアロードバランサ。
http://www.apsis.ch/pound/
手軽で便利なんだけど、以前あったBEASTの対応とか、POODLEの対応とか、なかなかリリースが来ない。
githubのリポジトリは以下。
https://github.com/goochjj/pound/
ぶっちゃけnginx使ったほうが捗r(ry
らoptionが追加されていた
DisableSSLv3ってオプションが追加されてた。
https://github.com/goochjj/pound/commit/49df5933fe8ea1e0721c2b2f86f339614d79e95b
ので、以下の話は旧情報として残しておきます。
ちなみにTLSFallbackSCSVも対応されてた。
https://github.com/goochjj/pound/commit/3916a93c9628eec2742c5c3b4efd6678c44815e5
(旧情報)対応してみた
単にSSLv3切るだけなら、以下のような感じで。
diff --git a/config.c b/config.c
index 6ed8e39..7e12665 100755
--- a/config.c
+++ b/config.c
@@ -902,6 +902,8 @@ parse_HTTPS(void)
POUND_CTX *pc;
ssl_op_enable = SSL_OP_ALL;
+ /* For against the POODLE, add SSL_OP_NO_SSLv3. */
+ ssl_op_enable |= SSL_OP_NO_SSLv3;
ssl_op_disable = SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION | SSL_OP_LEGACY_SERVER_CONNECT;
if((res = (LISTENER *)malloc(sizeof(LISTENER))) == NULL)
@@ -1210,6 +1212,9 @@ parse_HTTPS(void)
SSL_CTX_set_tmp_rsa_callback(pc->ctx, RSA_tmp_callback);
SSL_CTX_set_tmp_dh_callback(pc->ctx, DH_tmp_callback);
SSL_CTX_set_info_callback(pc->ctx, SSLINFO_callback);
+
+ /* For against the POODLE, set SSL_OP_NO_SSLv3. */
+ SSL_CTX_set_options(pc->ctx, SSL_OP_NO_SSLv3);
}
return res;
} else {
(旧情報)ちゃんと動くのん?
[root@quox x86_64]# curl -k -3 -I https://localhost/
curl: (35) SSL connect error
[root@quox x86_64]# curl -k -I https://localhost/
HTTP/1.0 302 Found
Location: http://example-domain.com/
Content-Type: text/html
Content-Length: 170
特に問題なく動きます。