在 TLS 中,当客户端向服务器发送其支持的密码套件时,如果服务器不支持这些套件中的任何一种,则会发送“No negotiable cipher suite”消息。这意味着服务器无法与客户端协商一个双方都支持的安全套件。
在代码示例中,可以使用Java SSLSocket类的setEnabledCipherSuites()方法来指定服务器所支持的密码套件,例如:
SSLSocket sslSocket = (SSLSocket) socketFactory.createSocket(host, port); String[] enabledCipherSuites = sslSocket.getSupportedCipherSuites(); // 获取所有支持的套件 sslSocket.setEnabledCipherSuites(enabledCipherSuites); // 设置支持的套件
或者也可以禁用一些不必要或不安全的套件,例如:
String[] enabledCipherSuites = sslSocket.getEnabledCipherSuites(); // 获取已经启用的套件
List
在以上示例中,setEnabledCipherSuites()方法用于启用或禁用SSL套接字的密码套件。如果enabledCipherSuites参数为null,则此套接字将启用所有支持的密码套件。如果禁用套件,则必须使用在SSLContext初始化时指定的套件中的密码套件之一启用SSL套接字。