Estoy intentando implementar un cliente SSL extremadamente simple para enviar una solicitud de POST HTTPS a un servidor, y me encontré con esto aparentemente inocuo excepción. La guía de referencia JSSE no ha sido de utilidad. Muchas gracias.Excepción de Java SSL: "El tamaño principal debe ser un múltiplo de 64 ..."
SSLContext ctx = SSLContext.getInstance("SSL");
// Accept-all trust manager
TrustManager[] trustEverything = { new DefaultTrustManager() };
// Keystore file in local directory
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new java.io.FileInputStream("keystore"),"123456".toCharArray());
// Key manager
KeyManager[] managers;
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, "123456".toCharArray());
managers = kmf.getKeyManagers();
ctx.init(managers, trustEverything, new SecureRandom());
SSLSocketFactory sslFact = (SSLSocketFactory) ctx.getSocketFactory();
// Connect to internal SSL-enabled server
SSLSocket socket = (SSLSocket) sslFact.createSocket("10.131.149.36", 8443);
La excepción se produce tan pronto como trato al apretón de manos:
socket.startHandshake();
He tratado de encontrar donde estos parámetros son inicializados en vano. Por favor, hazme sentir tonto.
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)
at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DHKeyPairGenerator.java:120)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:658)
at sun.security.ssl.DHCrypt.<init>(DHCrypt.java:117)
parece que esto se ha contestado: http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake -give-could-not-generate-dh-keypair-exception – Eugene
¿Ha comprobado esta pregunta? http://stackoverflow.com/questions/4764611/java-security-invalidalgorithmparameterexception-the-trustanchors-parameter-mus Parece que el keystore es vacío, puede obtener este error. – kosa
Reemplacé las fils en mi JRE con la política extendida de JCE; todavía no ir. @thinksteep: ¿No arrojaría una excepción sobre la carga del almacén de claves en ese caso? Gracias. – user1192564