Ubuntu 13.10にruby 1.9.2をインストールする時にSSLv2のエラーが出たら

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

http://deadmemes.net/2011/10/28/rvm-install-fails-on-ubuntu-11-10/

rbenv install 1.9.2-p180 すると、rubyのビルド時にエラーが出てしまった。

ossl_ssl.c:110:1: error: ‘SSLv2_method’ undeclared here (not in a function)
ossl_ssl.c:111:1: error: ‘SSLv2_server_method’ undeclared here (not in a function)
ossl_ssl.c:112:1: error: ‘SSLv2_client_method’ undeclared here (not in a function)

どうせaptitude install opensslするんだろ、と思いきや、実は脆弱性のあるSSLv2は最近opensslライブラリから消されてしまっているらしい。
http://ja.wikipedia.org/wiki/Transport_Layer_Security#SSL_2.0
つまり文字通り、undeclaredというエラーでした。

どうせ脆弱性があるならそんなものはいらん、というわけでソースにパッチを当ててしまう。

--- ruby-1.9.2-p180/ext/openssl/ossl_ssl.c  2010-12-23 22:24:00.000000000 -0500
+++ ruby-1.9.2-p180/ext/openssl/ossl_ssl_fixed.c    2011-10-28 11:39:30.265970001 -0400
@@ -107,9 +107,9 @@
     OSSL_SSL_METHOD_ENTRY(TLSv1),
     OSSL_SSL_METHOD_ENTRY(TLSv1_server),
     OSSL_SSL_METHOD_ENTRY(TLSv1_client),
-    OSSL_SSL_METHOD_ENTRY(SSLv2),
-    OSSL_SSL_METHOD_ENTRY(SSLv2_server),
-    OSSL_SSL_METHOD_ENTRY(SSLv2_client),
+    // OSSL_SSL_METHOD_ENTRY(SSLv2),
+    // OSSL_SSL_METHOD_ENTRY(SSLv2_server),
+    // OSSL_SSL_METHOD_ENTRY(SSLv2_client),
     OSSL_SSL_METHOD_ENTRY(SSLv3),
     OSSL_SSL_METHOD_ENTRY(SSLv3_server),
     OSSL_SSL_METHOD_ENTRY(SSLv3_client),

をopenssl.patchなどで保存し、

rbenv install --patch 1.9.2-p180 < ./openssl.patch

とする。
途中、ruby-1.9.2-p180/ext/openssl/ossl_ssl.cの場所を聞かれるが、ruby-buildはダウンロードしたソースファイルを/tmp/ruby-build.(DateTime).(pid)下に置くので、/tmp/ruby-build.hogehoge.brabra/ruby-1.9.2-p180/ext/openssl/ossl_ssl.cとか答えると、パッチが自動的に当たり、ビルドが通る。