Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-60679

java.lang.NoSuchMethodError: org.bouncycastle.asn1.DERNull.equals(Lorg/bouncycastle/asn1/ASN1Encodable;)Z

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • saml-plugin
    • None
    • Jenkins 2.204.1 (LTS)
      Icedtea8 3.11.0

      saml-plugin 1.1.4
      bouncycastle-api 1.18
    • saml-1.1.5

    Description

      When logging in using SAML, jenkins will throw this error:

      java.lang.NoSuchMethodError: org.bouncycastle.asn1.DERNull.equals(Lorg/bouncycastle/asn1/ASN1Encodable;)Z
       at org.bouncycastle.operator.jcajce.OperatorHelper.getSignatureName(Unknown Source)
       at org.bouncycastle.operator.jcajce.OperatorHelper.createSignature(Unknown Source)
       at org.bouncycastle.operator.jcajce.JcaContentSignerBuilder.build(Unknown Source)
       at org.jenkinsci.plugins.saml.BundleKeyStore.generateCertificate(BundleKeyStore.java:279)
       at org.jenkinsci.plugins.saml.BundleKeyStore.createCertificateChain(BundleKeyStore.java:151)
       at org.jenkinsci.plugins.saml.BundleKeyStore.init(BundleKeyStore.java:113)
       at org.jenkinsci.plugins.saml.OpenSAMLWrapper.createSAML2Client(OpenSAMLWrapper.java:113)
       at org.jenkinsci.plugins.saml.SamlRedirectActionWrapper.process(SamlRedirectActionWrapper.java:45)
       at org.jenkinsci.plugins.saml.SamlRedirectActionWrapper.process(SamlRedirectActionWrapper.java:30)
       at org.jenkinsci.plugins.saml.OpenSAMLWrapper.get(OpenSAMLWrapper.java:64)
       at org.jenkinsci.plugins.saml.SamlSecurityRealm.doCommenceLogin(SamlSecurityRealm.java:257)
       at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
       at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
       at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
       at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
       at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
       at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:535)
       at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
       at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747)
       Caused: javax.servlet.ServletException
       at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:797)
       at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878)
       at org.kohsuke.stapler.MetaClass$2.doDispatch(MetaClass.java:219)
       at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
       at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747)
       at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878)
       at org.kohsuke.stapler.Stapler.invoke(Stapler.java:676)
       at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
       at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
       at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154)
       at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:246)
       at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
       at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134)
       at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
       at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61)
       at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
       at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:128)
       at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151)
       at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:105)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
       at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:135)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
       at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
       at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
       at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90)
       at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
       at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
       at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
       at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
       at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
       at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
       at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
       at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700)
       at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
       at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)
       at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
       at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
       at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667)
       at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
       at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)
       at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
       at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
       at org.eclipse.jetty.server.Server.handle(Server.java:505)
       at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
       at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
       at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
       at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
       at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
       at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
       at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
       at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
       at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
       at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
       at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
       at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
       at java.lang.Thread.run(Thread.java:748)
      

       

      We started encountering this error on  January 4th 2020 which is the release date of bouncycastle-api 2.18 on Maven. I tried to update the bouncycastle-api dependency in the saml-plugin project and the tests gave the same error which is why I think it's related to the upgrade.

       

      Let me know if I can provide you anything else or even help resolving this issue by submitting a pull request if needed.

       

      Attachments

        Issue Links

          Activity

            Hello ifernandezcalvo,

            Thanks for your time on this issue! It seems to me that the issue remains even after this release. My jenkins successfully updated to saml plugin to 1.1.5 but the problem persists.

            Also, when I `mvn test` the Github repository on the master branch, the tests fail with the same error.

             

            Do you need any other information?

            Thanks!

            alefebvre Arnaud Lefebvre added a comment - Hello ifernandezcalvo , Thanks for your time on this issue! It seems to me that the issue remains even after this release. My jenkins successfully updated to saml plugin to 1.1.5 but the problem persists. Also, when I `mvn test` the Github repository on the master branch, the tests fail with the same error.   Do you need any other information? Thanks!

            `mvn test` work on CI and on my local environment, I was unable to replicate your issue on a local test environment, Could you check if you have two versions of the bouncycastle jar in the classpath?

            ifernandezcalvo Ivan Fernandez Calvo added a comment - `mvn test` work on CI and on my local environment, I was unable to replicate your issue on a local test environment, Could you check if you have two versions of the bouncycastle jar in the classpath?

            Thank you very much for your hint, it was indeed somehow related to the classpath, I've been told a specific version of bouncycastle was used in our icedtea8 java package to mainly avoid TLS issues, which explains why I still have the issue on my laptop and our jenkins. We'll switch to Java 11 which solves the problem.

             

            Again, thanks for your time on this matter

            alefebvre Arnaud Lefebvre added a comment - Thank you very much for your hint, it was indeed somehow related to the classpath, I've been told a specific version of bouncycastle was used in our icedtea8 java package to mainly avoid TLS issues, which explains why I still have the issue on my laptop and our jenkins. We'll switch to Java 11 which solves the problem.   Again, thanks for your time on this matter

            People

              ifernandezcalvo Ivan Fernandez Calvo
              alefebvre Arnaud Lefebvre
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: