This patch seems to fix it.

 cvs diff -up ext/openssl/*
Index: ext/openssl/ossl_ns_spki.c
===================================================================
RCS file: /src/ruby/ext/openssl/ossl_ns_spki.c,v
retrieving revision 1.3.2.4
diff -u -p -r1.3.2.4 ossl_ns_spki.c
--- ext/openssl/ossl_ns_spki.c  15 Mar 2006 07:42:00 -0000      1.3.2.4
+++ ext/openssl/ossl_ns_spki.c  17 Mar 2006 09:47:13 -0000
@@ -168,7 +168,7 @@ ossl_spki_get_challenge(VALUE self)
     GetSPKI(self, spki);
     if (spki->spkac->challenge->length <= 0) {
        OSSL_Debug("Challenge.length <= 0?");
-       return str_str_new(0, 0);
+       return rb_str_new(0, 0);
     }

     return rb_str_new(spki->spkac->challenge->data,
Index: ext/openssl/ossl_ssl.c
===================================================================
RCS file: /src/ruby/ext/openssl/ossl_ssl.c,v
retrieving revision 1.13.2.10
diff -u -p -r1.13.2.10 ossl_ssl.c
--- ext/openssl/ossl_ssl.c      15 Mar 2006 07:42:00 -0000      1.13.2.10
+++ ext/openssl/ossl_ssl.c      17 Mar 2006 09:47:14 -0000
@@ -461,7 +461,7 @@ ossl_sslctx_set_ciphers(VALUE self, VALU
     if (NIL_P(v))
        return v;
     else if (TYPE(v) == T_ARRAY) {
-        str = str_str_new(0, 0);
+        str = rb_str_new(0, 0);
         for (i = 0; i < RARRAY(v)->len; i++) {
             elem = rb_ary_entry(v, i);
             if (TYPE(elem) == T_ARRAY) elem = rb_ary_entry(elem, 0);