我正在使用SSLServerSocket接受我的openSUSE服务器上的客户端连接,但它们都不能连接.我总是得到一个SSLHandshakeException说no cipher suites in common.我已经激活了所有可能的套件,启用了多个协议,尝试使用最新的oracle JRE和openjdk.我还在论坛和东西上关注了其他几个帖子并"解锁"了oracle jre中的所有密码套件,我改变了openjdk jre的设置,如下所示:
已禁用:已#security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg
启用:security.provider.9=sun.security.ec.SunEC
这是我初始化SSLServerSocket的方式:
System.setProperty("javax.net.ssl.keyStore", "./keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "nopassword");
java.lang.System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
}
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
}
};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("TLSv1.2");
sc.init(null, trustAllCerts, new …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我正在设置的Java客户端和服务器之间建立SSL或TLS连接.
我一直在用它SSLContext.getInstance("SSL")来构建它SSLContext,它起作用了.
我想知道protocol参数的用途是什么SSLContext.getInstance(String protocol).
特别是,使用SSLContext.getInstance("SSL")和SSLContext.getInstance("TLS")/或其他可能的值之间有什么变化?
我正在尝试在两个Java项目之间建立安全连接,但我收到了SSLHandshakeException(没有共同的密码套件).这是在两侧创建套接字的方法:
客户:
private SSLSocket getSocketConnection() throws SSLConnectionException {
try {
/* Load properties */
String keystore = properties.getProperty("controller.keystore");
String passphrase = properties.getProperty("controller.passphrase");
String host = properties.getProperty("controller.host");
int port = Integer.parseInt(properties
.getProperty("controller.port"));
/* Create keystore */
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream(keystore), passphrase.toCharArray());
/* Get factory for the given keystore */
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext ctx = SSLContext.getInstance("SSL");
ctx.init(null, tmf.getTrustManagers(), null);
SSLSocketFactory factory = ctx.getSocketFactory();
return (SSLSocket) factory.createSocket(host, port);
} catch (Exception e) {
throw new SSLConnectionException(
"Problem connecting …Run Code Online (Sandbox Code Playgroud)