我正在运行基于Apache MINA / FTP的FTP服务器,尝试以SSL模式连接时,我始终收到以下异常:
javax.net.ssl.SSLHandshakeException: no cipher suites in common
我已验证在客户端正确设置了密码套件,如下所示:
SSLServerSocketFactory serverSocketFactory = (SSLServerSocketFactory)
SSLServerSocketFactory.getDefault();
String[] cipherSuites = serverSocketFactory.getDefaultCipherSuites();
SslConfigurationFactory sslConfigFactory = new SslConfigurationFactory();
sslConfigFactory.setKeystoreFile(keyStoreFile);
sslConfigFactory.setKeystorePassword(keyPass);
sslConfigFactory.setEnabledCipherSuites(cipherSuites);
sslConfigFactory.setSslProtocol("SSL");
SslConfiguration sslConfig = sslConfigFactory.createSslConfiguration();
sslFactory.setSslConfiguration(sslConfig);
Listener listener = sslFactory.createListener();
serverFactory.addListener("SSL-listener", listener);
因此,如何验证客户端使用的密码套件与服务器端提供的密码套件匹配?
我正在使用FileZilla和Cyberduck进行测试,但是在这些客户端的设置中没有发现任何可以支持哪种密码套件的信息。
最佳答案
我发现在JVM启动时设置sysproperty javax.net.debug="ssl"
很有用,然后观看stdout获取详细报告。
关于ssl - 如何通过SSL/TLS找出FTP客户端支持哪些密码套件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24511395/