2013-10-21 69 views
1

我正尝试在全新的MacBook Pro上设置Tomcat应用程序开发环境。我需要设置一个实现org.bouncycastle.jce.provider.BouncyCastleProvider的SSL连接器。BouncyCastleProvider无法在Mac OSX上的Tomcat 7启动时加载

的Tomcat 7点启动,但SSL连接无法进行安装和我读到这堆在Tomcat中走出:

Grave: Failed to initialize connector [Connector[HTTP/1.1-9443]] 
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[HTTP/1.1-9443]] 
    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:814) 
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:640) 
    at org.apache.catalina.startup.Catalina.load(Catalina.java:665) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) 
Caused by: org.apache.catalina.LifecycleException: L''initialisation du gestionnaire de protocole a échoué 
    at org.apache.catalina.connector.Connector.initInternal(Connector.java:983) 
    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:981) 
    ... 13 more 

个声音告诉我,已与做“抛出java.lang.ClassNotFoundException:”。不过,我在JAVA_HOME/lib/ext中找到了包含org.bouncycastle.jce.provider.BouncyCastleProvider类的jar。我甚至试图将它放在CATALINA_BASE/lib中,以查看这是否可能来自ClassPath错误。不 !

Tomcat的server.xml中摘录:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
       maxThreads="150" scheme="https" secure="true" 
       clientAuth="false" sslProtocol="TLS" 
      keystoreFile="/Users/xavier/ssl/pchain.keystore" 
      keystorePass="pwd" /> 

<Connector port="9443" keystorePass="pwd" alias="pca" 
       keystoreFile="/Users/xavier/ssl/pca.keystore" keystoreType="BKS" 
       SSLEnabled="true" clientAuth="false" protocol="HTTP/1.1" scheme="https" 
       secure="true" sslProtocol="TLS" sslImplementationName="org.bouncycastle.jce.provider.BouncyCastleProvider"/> 

这里是我的配置信息:

OS X版本10.8.3, JDK 1.7.0_45, Tomcat的版本7.0.42。 BouncyCastle测试包:bcprov-jdk15on -146.jar到bcprov -jdk15on-149.jar

有人已经解决了这个问题吗?

+0

谢谢Divanov帮助我。是的,的确,提供程序在java.security文件中正确设置。 – Jobar33

回答

0

org.bouncycastle.jce.provider.BouncyCastleProvider是JCE提供者,但不是JSSE提供者,预计为sslImplementationName

但是,默认Tomcat的JSSE提供程序使用内部JCE,因此如果您在JRE中正确配置了BouncyCastleProvider,那么其功能将可供JSSE提供程序使用。

此外,它将有助于知道你的最终目标是什么,以彻底回答这个问题 。