3

I have tried everything: I have followed this tutorial: How to create a BKS (BouncyCastle) format Java Keystore that contains a client certificate chain

And I am still getting Class not found exception Please help.

SEVERE: Failed to initialize connector [Connector[HTTP/1.1-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-8443]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:821)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:642)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:667)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:980)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 12 more
Caused by: java.lang.ClassNotFoundException: Error loading SSL Implementation org.bouncycastle.jce.provider.BouncyCastleProvider :java.lang.ClassCastException: org.bouncycastle.jce.provider.BouncyCastleProvider cannot be cast to org.apache.tomcat.util.net.SSLImplementation
    at org.apache.tomcat.util.net.SSLImplementation.getInstance(SSLImplementation.java:75)
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:118)
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)
    ... 13 more

Here is the providers in my java.security:

security.provider.1=sun.security.provider.Sun
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=sun.security.ec.SunEC
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=com.sun.crypto.provider.SunJCE
security.provider.7=sun.security.jgss.SunProvider
security.provider.8=com.sun.security.sasl.Provider
security.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.10=sun.security.smartcardio.SunPCSC
security.provider.11=apple.security.AppleProvider
Community
  • 1
  • 1
john doe
  • 157
  • 1
  • 10
  • Possible duplicate of this question? http://stackoverflow.com/questions/19505042/bouncycastleprovider-fails-to-load-at-tomcat-7s-startup-on-a-mac-osx – Rob Dec 21 '15 at 05:23
  • Rob dude, I have locked at that question but it does not solve my problem – john doe Dec 21 '15 at 05:26
  • I think I am going to not use Bouncy Castle and just go with the standard keystore that comes with Java – john doe Dec 21 '15 at 05:27
  • I finally re-read the stack trace. The ClassNotFoundException is very misleading. Notice that in fact the root cause is a ClassCastException. So, it is NOT a problem with the classpath or even the configuration of java.security. Instead, the problem must be related to the `sslImplementationName` setting. – Rob Dec 21 '15 at 05:28
  • Okay, so what should I do, do you have any solution in mind? – john doe Dec 21 '15 at 05:34
  • can you provide your code, your context, and precisely where it crashes ? – guillaume girod-vitouchkina Dec 22 '15 at 22:16
  • Hi, I am unable to resolve the problem. Does anyone have a solution? – Ranjan Sep 24 '16 at 19:10

1 Answers1

1

From the link you have included try replacing

Security.addProvider(new BouncyCastleProvider());

by

Security.insertProviderAt(new BouncyCastleProvider(), 1); 
//  The position is 1-based, that is, 1 is most preferred, followed by 2, and so on.

to makes sure BC is preferred over the Sun Provider