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

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

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Fixed
    • Component/s: saml-plugin
    • Labels:
      None
    • Environment:
      Jenkins 2.204.1 (LTS)
      Icedtea8 3.11.0

      saml-plugin 1.1.4
      bouncycastle-api 1.18
    • Similar Issues:
    • Released As:
      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

            Hide
            alefebvre Arnaud Lefebvre added a comment -

            Hello Ivan Fernandez Calvo,

            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!

            Show
            alefebvre Arnaud Lefebvre added a comment - Hello Ivan Fernandez Calvo , 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!
            Hide
            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?

            Show
            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?
            Hide
            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

            Show
            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

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

                Dates

                • Created:
                  Updated:
                  Resolved: