2012-02-06 46 views
7

Tôi đang cố gắng triển khai ứng dụng khách SSL cực kỳ đơn giản để gửi yêu cầu HTTPS POST tới máy chủ và tôi đã gặp phải sự cố vô hại này ngoại lệ. Hướng dẫn tham khảo JSSE không được sử dụng. Cám ơn rất nhiều.Ngoại lệ SSL SSL - "Kích thước chính phải là bội số của 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); 

Trường hợp ngoại lệ được ném ngay sau khi tôi cố gắng bắt tay:

socket.startHandshake(); 

Tôi đã cố gắng để tìm thấy nơi các thông số này được khởi động vô ích. Hãy làm cho tôi cảm thấy ngớ ngẩn.

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) 
+0

Có vẻ như thế này đã được trả lời: http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake -give-can-not-generate-dh-keypair-exception – Eugene

+0

Bạn đã kiểm tra câu hỏi này http://stackoverflow.com/questions/4764611/java-security-invalidalgorithmparameterexception-the-trustanchors-parameter-mus có vẻ như khi kho khóa là trống, bạn có thể gặp lỗi này. – kosa

+1

Tôi đã thay thế các tệp trong JRE của mình bằng chính sách JCE mở rộng; vẫn không đi. @thinksteep: Nó sẽ không ném một ngoại lệ trên tải keystore trong trường hợp đó? Cảm ơn. – user1192564

Trả lời

Các vấn đề liên quan