是否可以从Java的服务器端订购密码套件?

时间:2019-07-23 16:07:33

标签: java ssl serversocket ssl-security

Java docs中指出:

  

public final void setUseCipherSuitesOrder​(boolean honorOrder)

     

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

     

参数:       honorOrder-SSL / TLS / DTLS握手期间是否应遵守#getCipherSuites中的本地密码套件顺序。

密码服的顺序:

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 -p 465 host_address --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

密码顺序仍由客户端cipher preference: client定义。是否可以通过服务器设置优先级?使用JDK 12。

0 个答案:

没有答案