Frage:
Ich kann keine SSL-Verbindungen mit einem herstellen SSLServerSocket. Obwohl alle möglichen Cipher Suites und Protokolle aktiviert sind, erhalte ich eine SSLHandshakeException mit der Meldung „Keine gemeinsamen Cipher Suites“.
Antwort:
Das Problem liegt in der Initialisierung von SSLContext. Die Bereitstellung eines Null-KeyManager-Arrays führt zu einem leeren KeyManager, dem RSA- oder DSA-Zertifikate fehlen. Dies verhindert die Verwendung von Standard-Cipher-Suites, die auf diesen Zertifikaten basieren, und führt letztendlich zu dem Fehler. Um dies zu beheben:
KeyStore ks = KeyStore.getInstance("JKS"); InputStream ksIs = new FileInputStream("..."); ks.load(ksIs, "password".toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(ks, "keypassword".toCharArray());
SSLContext sc = SSLContext.getInstance("TLSv1.2"); sc.init(kmf.getKeyManagers(), null, new SecureRandom());
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Meldung „SSLHandshakeException: no cipher suites in common', wenn ich einen SSLServerSocket verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!