Similar problem is occurring with examples from Ruby Cookbook recipe 16.4 and also soap4r examples Hello World etc.
MRI platform (1.8.6 p0) has no error but JRuby/Netbeans build 4009 produces (for Hello World Example)
org.jruby.ext.openssl.impl.PKCS7Exception: PKCS7[Method: 117, Reason: 117]
org.jruby.ext.openssl.impl.PKCS7Exception: PKCS7[Method: 117, Reason: 117]
at org.jruby.ext.openssl.impl.PKCS7.verify(PKCS7.java:353)
at org.jruby.ext.openssl.PKCS7.verify(PKCS7.java:486)
at org.jruby.ext.openssl.PKCS7$i_method_0_0$RUBYINVOKER$verify.call(org/jruby/ext/openssl/PKCS7$i_method_0_0$RUBYINVOKER$verify.gen)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:120)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:292)
at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.IfNode.interpret(IfNode.java:103)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.ast.IfNode.interpret(IfNode.java:108)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:211)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:132)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:343)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:82)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:274)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:168)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:406)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:545)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:151)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:156)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:394)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.InstAsgnNode.interpret(InstAsgnNode.java:88)
at org.jruby.ast.AttrAssignOneArgNode.interpret(AttrAssignOneArgNode.java:32)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:316)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:192)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:457)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:551)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:168)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:180)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:445)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.InstAsgnNode.interpret(InstAsgnNode.java:88)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:274)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:168)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:406)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:545)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:151)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:156)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:394)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:253)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:156)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:394)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.InstAsgnNode.interpret(InstAsgnNode.java:88)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:253)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:156)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:394)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:358)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:216)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:508)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:557)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:186)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:204)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:496)
at org.jruby.ast.CallThreeArgNode.interpret(CallThreeArgNode.java:61)
at org.jruby.ast.InstAsgnNode.interpret(InstAsgnNode.java:88)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:101)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:67)
at org.jruby.internal.runtime.methods.DefaultMethod.interpretedCall(DefaultMethod.java:163)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:140)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:316)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:192)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:457)
at org.jruby.RubyClass$SpecificArityNew.call(RubyClass.java:551)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:168)
at org.jruby.runtime.CallSite$InlineCachingCallSite.cacheAndCall(CallSite.java:180)
at org.jruby.runtime.CallSite$InlineCachingCallSite.call(CallSite.java:445)
at C_3a_.Users.paulAdmin.Documents.NetbeansProjects.soap_play_1_0.lib.main._file_(main.rb:5)
at C_3a_.Users.paulAdmin.Documents.NetbeansProjects.soap_play_1_0.lib.main._file_(main.rb)
at C_3a_.Users.paulAdmin.Documents.NetbeansProjects.soap_play_1_0.lib.main.load(main.rb)
at org.jruby.Ruby.runScript(Ruby.java:544)
at org.jruby.Ruby.runNormally(Ruby.java:457)
at org.jruby.Ruby.runFromMain(Ruby.java:330)
at org.jruby.Main.run(Main.java:214)
at org.jruby.Main.run(Main.java:100)
at org.jruby.Main.main(Main.java:84)
Caused by: java.lang.ClassCastException: org.bouncycastle.asn1.DERSequence cannot be cast to org.bouncycastle.asn1.x509.X509Name
at org.jruby.ext.openssl.x509store.X509Utils.checkIfIssuedBy(X509Utils.java:253)
at org.jruby.ext.openssl.x509store.StoreContext$4.call(StoreContext.java:1100)
at org.jruby.ext.openssl.x509store.StoreContext.verifyCertificate(StoreContext.java:666)
at org.jruby.ext.openssl.impl.PKCS7.verify(PKCS7.java:341)
... 106 more
cacerts: C:/Users/paulAdmin/Documents/Netbeans/netbeans-hudson-trunk-4009-ruby/netbeans/ruby2/jruby-1.1.4/lib/ruby/gems/1.8/gems/httpclient-2.1.2/lib/httpclient/cacert.p7s loading failed
"Hello World, from main"
The problem is that it doesn't break HTTPClient always. Specifically, it works very often - except when there is something strange in the certificate which makes the structure slightly different. To fix it I would need a test case against the specific https site that generated it.
That cast is valid most of the time, and more importantly I don't know the structure of that DERSequence until I can take a look at it.