Siena. です。

サンプルを使って問題点の切り分けができました。
文末にあるように、require 'openssl' では
openssl.rb がロードされないためのようです。


》とりあえず、OpenSSLのバージョンはなんでしょうか。# 0.9.7 以上をメインのターゲットにしていて、0.9.6 でも make # が通ることまでは確認しています。

書き忘れていました。すみません。

$ openssl version
OpenSSL 0.9.7a Feb 19 2003

バイナリパッケージを使用しています。いろいろと道具が
足りなくて、自分で新しい版をビルドするのは難しい状況です。

# OS/2 用フリーソフトアーカイブサイト Hobbes より
# http://hobbes.nmsu.edu/cgi-bin/h-viewer?sh=1&
#   fname=/pub/os2/util/encrypt/openssl-0.9.7a-os2-bin.zip

》> ext/openssl 単体のテストコードはどこかにあるでしょうか?sample/openssl/echo_svr.rb に同様のコードがあるので試すことができると思います。

ありがとうございます。sample の下は未確認でした。

》> $ ruby runner.rb drb/test_drbssl.rb> T:/lib/ruby/1.8/drb/ssl.rb:83:in `setup_certificate': > undefined method `create_extension' for > #<OpenSSL::X509::ExtensionFactory:0x44d0dc> (NoMethodError)
》
》X509::ExtensionFactory#create_extension は ext/openssl/lib/openssl/x509.rb で定義されています。考えられるのは、ファイルがちゃんとコピーできていないか、site_ruby 等に入っている古い openssl を読んでいるか、くらいですかねえ。

一応、古い版はディレクトリごとリネームして、
新規導入しているので混在してはいないはずです。
また、コピーもきちんと行なわれているようです。

$ type ruby
ruby is t:/bin/ruby.exe
$ ls t:/lib/ruby/1.8/openssl/
bn.rb         cipher.rb     ssl.rb
buffering.rb  digest.rb     x509.rb

T: は仮想ドライブなので念のため実体を調べてみても導入先は一致しています。
# 実ドライブ中へのシンボリックリンクの塊みたいなファイルシステム

$ tvdir t:/bin/ruby.exe | grep ruby | cut -c40-100
 ruby.exe --> F:\Usr\Prog\Ruby\bin\ruby.exe
$ tvdir T:/lib/ruby/1.8 | grep openssl | cut -c40-100
 openssl --> F:\Usr\Prog\Ruby\lib\ruby\1.8\openssl
 openssl.rb --> F:\Usr\Prog\Ruby\lib\ruby\1.8\openssl.rb


おかしいなと思って、openssl.rb と openssl/x509.rb に puts を
埋め込んで sample/openssl/echo_svr.rb で調べてみました。
require 'openssl' で openssl.rb がロードされていないようです。
同様にエラーになります。

$ ruby echo_svr.rb
.....................................
echo_svr.rb:31: undefined method `create_extension' for 
#<OpenSSL::X509::ExtensionFactory:0x33bf18> (NoMethodError)

拡張ライブラリを静的にリンクしているのですが、そのせいでしょうか。
openssl.rb を opensslx.rb にコピーして echo_svr.rb を
require 'opensslx' と書き換えたところ、正常に実行されたようです。
また、明示的に require 'openssl.rb' としても正常に実行されたようです。

$ ruby echo_svr.rb
...............................................................
!!! WARNING: PEER CERTIFICATE WON'T BE VERIFIED !!!


問題点が分かりました。ありがとうございます。
これはどのようにすべきでしょうか。

---
Siena. <mailto:siena / faculty.chiba-u.jp>