我想在tomcat(版本8)连接器中指定slImplementationName类名,以便不考虑SSL握手部分中java.security中的默认顺序。
来自tomcat文档: -
“要使用的SSL实现的类名。如果未指定, org.apache.tomcat.util.net.jsse.JSSEImplementation的默认值为 用于包装JVM的默认JSSE提供程序。注意JVM可以 被配置为使用不同的JSSE提供程序作为默认“
但是这并未指定java中可以与此属性一起使用的实现类。
While trying to start tomcat by chnaging the attribut i am getting exception:-
06-Jun-2016 12:05:15.639 SEVERE [main] org.apache.catalina.core.StandardService.initInternal 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:567)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:851)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.startup.Catalina.load(Catalina.java:576)
at org.apache.catalina.startup.Catalina.load(Catalina.java:599)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
... 12 more
Caused by: java.lang.ClassNotFoundException: Error loading SSL Implementation com.sun.security.sasl.Provider :java.lang.ClassCastException: com.sun.security.sasl.Provider 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:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
... 13 more
我尝试过使用“com.sun.net.ssl.internal.ssl.Provider”和“com.sun.security.sasl.Provider”,但没有运气。
任何指针都非常有用。
答案 0 :(得分:1)
sslImplementationName
的班级必须延长org.apache.tomcat.util.net.SSLImplementation
。因此,当您指定不满足此条件的类时,将抛出异常。
由于您的目的是更改加密服务提供商的默认顺序。您应该覆盖每个JVM实例的安全配置。确保security.overridePropertiesFile=true
中的$JRE_HOME/lib/security/java.security
。
然后修改Tomcat启动命令并添加系统属性:
-Djava.security.properties = _path_to_your_config _
对于Java8,它可以追加或覆盖$JRE_HOME/lib/security/java.security
中的设置。对于旧版本,它将完全覆盖所有设置。