java - 是否可以从 Java 的服务器端订购密码套件?
问题描述
在Java 文档中指出:
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。
解决方案
推荐阅读
- python - 从 CNN 层获取过滤器值
- react-native - npm install Expo cli,停在extraxt:rxjs
- angular - Angular 7 从选择器解析组件工厂
- autodesk-forge - Fusion 360 文件列表的 AutoDesk API
- r - 如何在 R 中回收字符向量?
- firebase - 使用 Firebase.Core 框架的两个 Cordova 插件在构建应用程序时导致冲突
- java - 在 Java / mysql 中批量插入的更好方法?插入表值(...),(...)?或preparedStatement.addBatch()
- python - 如何计算每个项目的平均索引位置
- c# - 当图像尺寸发生变化时,如何计算以抵消真实尺寸的坐标值?
- php - 如何在循环内实例化类(从数组)