作为内部可信网络中的CXF服务器,我希望我的服务器通过SSL进行通信,只使用身份验证,而不需要加密。为此,我尝试将CXF conf文件中的tlsServerParameters设置为只保留空密码,如下所示:
<httpj:tlsServerParameters >
<sec:keyManagers> <my keyManager> </sec:keyManagers>
<sec:trustManagers> <my trustManager> </sec:trustManagers>
<sec:cipherSuites>
<sec:cipherSuite>SSL_RSA_WITH_NULL_MD5</sec:cipherSuite>
<sec:cipherSuite> <some more ciphers> </sec:cipherSuite>
</sec:cipherSuites>
<sec:cipherSuitesFilter>
<sec:include>.*_WITH_NULL_.*</sec:include>
</sec:cipherSuitesFilter>
</httpj:tlsServerParameters>当我与使用空密码的客户端连接时,我总是得到"SSLHandshakeException: no cipher suites in common“。
知道我做错了什么吗?
任何帮助都将不胜感激!
发布于 2014-12-23 01:19:32
经过几天的研究,我通过扩展SslContextFactory和重写selectCipherSuites函数做到了这一点。
<httpj:engine port=" ... ">
<httpj:tlsServerParametersRef id=" ... " />
<httpj:connector>
<bean class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<property name="port" value=" ... " />
<property name="maxIdleTime" value=" ... "/>
<property name="keystore" value= " ... " />
<property name="password" value= " ... " />
<property name="keyPassword" value= " ... " />
<property name="keystoreType" value= " ... " />
<constructor-arg>
<bean class=" ... MyContextFactoryForConnector">
<property name="keyStore" value=" ... "/>
<property name="keyStoreType" value=" ... "/>
<property name="keyStorePassword" value=" ... "/>
<property name="KeyManagerPassword" value=" ... "/>
</bean>
</constructor-arg>
</bean>
public class MyContextFactoryForConnector extends SslContextFactory
{
@Override
public String[] selectCipherSuites(String[] enabledCipherSuites, String[] supportedCipherSuites)
{
return supportedCipherSuites; // includes null ciphers
}
}任何更优雅的方式(不涉及代码)都会更好。
谢谢,
https://stackoverflow.com/questions/27549648
复制相似问题