如何使用 Bouncy Castle 编辑 Java 中的密码套件列表
How can I edit the list of cipher suite in Java using Bouncy Castle
以下代码列出了 Java SE 8 支持的密码套件:
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Arrays;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSocketFactory;
public class ListCiphers {
public static void main(String[] args) throws UnknownHostException, IOException
{
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
String[] cipherSuites = factory.getSupportedCipherSuites();
System.out.println(Arrays.toString(cipherSuites));
} //end main
}
我想制作配置了一些特定密码套件列表的 SSL 客户端。我想使用的密码套件是标准化的,但 Jva SE 8 不支持。例如,此密码在 firefox 中列出:
ECDHE_ECDSA_WITH_AES_256_SHA
请以任何方式帮助我编辑我的 SSL 客户端中的密码套件列表。充气城堡对此有帮助吗?如何?请一步一步给我讲清楚。另外,如果您知道我想要的可以通过使用其他语言(例如 python)来实现,也请帮助我。
How can I edit the list of cipher suite in Java using Bouncy Castle
见Which Cipher Suites to enable for SSL Socket? and use SSLSocketFactoryEx
. Its a drop-in replacement for Java's SSLSocketFactory
如果你不想用SSLSocketFactoryEx
,那就撕开密码找密码组的交集。
它控制协议和密码套件。没有意外的惊喜,比如从 SSLSocketFactory.getInstance("TLS");
.
取回 SSLv3 套接字
没有什么是可配置的,所以用户不能搬起石头砸自己的脚。它也已准备好用于 TLS 1.3
TLS_ECDHE_ECDSA_WITH_AES_256_SHA 由 Java 8(和 7)支持,无需添加 BouncyCastle,它在 JSSE 中默认启用,因此您不需要 "edit" 任何东西。
但是 all JRE 不允许 all 256 位 对称加密(包括 256 位 SSL/TLS ciphersuites) 除非你安装 "JCE Unlimited Strength Jurisdiction Policy Files";
请参阅底部附近 "Additional Resources" 下的 http://www.oracle.com/technetwork/java/javase/downloads/index.html。
您不能直接在出厂时编辑密码套件。
但是,您可以在 SSLSocket
上选择要支持的确切密码(从可用密码中选择)
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
String[] cipherSuites = factory.getSupportedCipherSuites();
SSLSocket sslSocket = (SSLSocket) factory.createSocket();
// Choose the exact ciphers you need from the available
String[] filteredCipherSuites = cipherSuites;
sslSocket.setEnabledCipherSuites(filteredCipherSuites);
以下代码列出了 Java SE 8 支持的密码套件:
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Arrays;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSocketFactory;
public class ListCiphers {
public static void main(String[] args) throws UnknownHostException, IOException
{
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
String[] cipherSuites = factory.getSupportedCipherSuites();
System.out.println(Arrays.toString(cipherSuites));
} //end main
}
我想制作配置了一些特定密码套件列表的 SSL 客户端。我想使用的密码套件是标准化的,但 Jva SE 8 不支持。例如,此密码在 firefox 中列出:
ECDHE_ECDSA_WITH_AES_256_SHA
请以任何方式帮助我编辑我的 SSL 客户端中的密码套件列表。充气城堡对此有帮助吗?如何?请一步一步给我讲清楚。另外,如果您知道我想要的可以通过使用其他语言(例如 python)来实现,也请帮助我。
How can I edit the list of cipher suite in Java using Bouncy Castle
见Which Cipher Suites to enable for SSL Socket? and use SSLSocketFactoryEx
. Its a drop-in replacement for Java's SSLSocketFactory
如果你不想用SSLSocketFactoryEx
,那就撕开密码找密码组的交集。
它控制协议和密码套件。没有意外的惊喜,比如从 SSLSocketFactory.getInstance("TLS");
.
没有什么是可配置的,所以用户不能搬起石头砸自己的脚。它也已准备好用于 TLS 1.3
TLS_ECDHE_ECDSA_WITH_AES_256_SHA 由 Java 8(和 7)支持,无需添加 BouncyCastle,它在 JSSE 中默认启用,因此您不需要 "edit" 任何东西。 但是 all JRE 不允许 all 256 位 对称加密(包括 256 位 SSL/TLS ciphersuites) 除非你安装 "JCE Unlimited Strength Jurisdiction Policy Files"; 请参阅底部附近 "Additional Resources" 下的 http://www.oracle.com/technetwork/java/javase/downloads/index.html。
您不能直接在出厂时编辑密码套件。
但是,您可以在 SSLSocket
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
String[] cipherSuites = factory.getSupportedCipherSuites();
SSLSocket sslSocket = (SSLSocket) factory.createSocket();
// Choose the exact ciphers you need from the available
String[] filteredCipherSuites = cipherSuites;
sslSocket.setEnabledCipherSuites(filteredCipherSuites);