可以在Java中从服务器端订购密码套件吗?

可以在Java中从服务器端订购密码套件吗?,java,ssl,serversocket,ssl-security,Java,Ssl,Serversocket,Ssl Security,在声明中,声明: public最终作废设置使用密码套件顺序​(按顺序排列) 设置是否应遵守本地密码套件首选项 参数: honorOrder—在SSL/TLS/DTLS握手过程中,是否应遵守本地密码套件在#GetCipherSuite中的顺序 密码诉讼的顺序: String[] cs = new String[]{ "TLS_RSA_WITH_AES_256_GCM_SHA384", "TLS_RSA_WITH_AES_256_CBC_SHA256", "TLS_RSA_WITH_AES_2

在声明中,声明:

public最终作废设置使用密码套件顺序​(按顺序排列)

设置是否应遵守本地密码套件首选项

参数: honorOrder—在SSL/TLS/DTLS握手过程中,是否应遵守本地密码套件在#GetCipherSuite中的顺序

密码诉讼的顺序:

String[] cs = new String[]{
 "TLS_RSA_WITH_AES_256_GCM_SHA384",
 "TLS_RSA_WITH_AES_256_CBC_SHA256",
 "TLS_RSA_WITH_AES_256_CBC_SHA"
  };
如果我将套接字参数设置为:

SSLServerSocket.getSSLParameters().setUseCipherSuitesOrder(true);
SSLServerSocket.setEnabledProtocols(....);
SSLServerSocket.setEnabledCipherSuites(cs);
通过使用
#nmap-sT-p465主机地址--script ssl enum ciphers.nse
结果是:

PORT    STATE SERVICE
465/tcp open  smtps
| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 4096) - A
|       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 4096) - A
|       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 4096) - A
|     compressors:
|       NULL
|     cipher preference: client
|_  least strength: A
密码顺序仍由客户端定义:
密码首选项:客户端
。是否可以按服务器设置优先级?使用JDK 12。

好吧,API说应该,这不是一个严格的必须。实现类可以是参数,而不必是参数。这可能是一个可以解释你的观察的原因。