2011-09-30 5 views
0

J'écris une application qui acceptera les requêtes LDAP via le port 636, effectuera des tâches non ldap, puis rendra une réponse ldap.Java/SSL Server Socket

Je suis un peu nouveau sur Java, mais j'ai tout de même réussi - j'ai créé un cert auto-signé, je l'ai importé dans le keystore.

Lors d'une tentative d'établir une connexion, je reçois l'erreur suivante - principale, gestion des exceptions: javax.net.ssl.SSLHandshakeException: alerte fatale reçu: unknown_ca

Argh ... J'ai inclus le débogage informations en bas .. Mon application trouve le cert dans le keystore - Merci pour toute aide.

System.setProperty("javax.net.debug", "ssl"); 
System.setProperty("javax.net.ssl.keyStore", "C:\\openssl\\certs\\laptop.ks"); 
System.setProperty("javax.net.ssl.keyStorePassword", "somepassword"); 
System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true"); 
System.setProperty("javax.net.ssl.trustStore", "C:\\openssl\\certs\\laptop.ks"); 
int port = 636; 

ServerSocketFactory ssocketFactory = SSLServerSocketFactory.getDefault(); 
ServerSocket ssocket; 
ssocket = ssocketFactory.createServerSocket(port); 

// Listen for connections 
while (true) 
{ 
    Socket socket = ssocket.accept(); 
    InputStream in = socket.getInputStream(); 

    // do stuff 
socket.close(); 
} 

///// DEBUG OUT lorsque le programme est exécuté

keyStore is : C:\openssl\certs\laptop.ks 
keyStore type is : jks 
keyStore provider is : 
init keystore 
init keymanager of type SunX509 
*** 
found key for : mylaptop 
chain [0] = [ 
[ 
    Version: V1 
    Subject: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 

    Key: Sun RSA public key, 1024 bits 
    modulus: <SNIP> 
    public exponent: 65537 
    Validity: [From: Fri Sep 30 09:55:27 EDT 2011, 
      To: Sat Sep 29 09:55:27 EDT 2012] 
    Issuer: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    SerialNumber: [ 03] 

] 
    Algorithm: [SHA1withRSA] 
    Signature: <snip> 

] 
*** 
trustStore is: C:\openssl\certs\laptop.ks 
trustStore type is : jks 
trustStore provider is : 
init truststore 
adding as trusted cert: 
    Subject: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
     Issuer: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 

algorithme RSA; Numéro de série: 0x3 Valable du vendredi 30 septembre 09:55:27 EDT 2011 jusqu'au sam 29 septembre 09:55:27 EDT 2012

adding as trusted cert: 
    Subject: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    Issuer: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    Algorithm: RSA; Serial number: 0xb85a831528797e79 
    Valid from Fri Sep 30 09:53:23 EDT 2011 until Sat Sep 29 09:53:23 EDT 2012 

trigger seeding of SecureRandom 
done seeding SecureRandom 
Allow unsafe renegotiation: true 
Allow legacy hello messages: true 
Is initial handshake: true 
Is secure renegotiation: false 
matching alias: mylaptop 
main, called closeSocket() 
Allow unsafe renegotiation: true 
Allow legacy hello messages: true 
Is initial handshake: true 
Is secure renegotiation: false 
main, READ: SSL v2, contentType = Handshake, translated length = 65 
    *** ClientHello, TLSv1 
Cipher Suites: <snip> 

*** 
Cipher suite: SSL_RSA_WITH_RC4_128_MD5 
*** Certificate chain 
chain [0] = [ 
[ 
    Version: V1 
    Subject: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5 

    Key: Sun RSA public key, 1024 bits 
    modulus: <snip> 
    public exponent: 65537 
    Validity: [From: Fri Sep 30 09:55:27 EDT 2011, 
       To: Sat Sep 29 09:55:27 EDT 2012] 
    Issuer: CN=Donny Shrum, OU=HPC, O=FSU, L=Tallahassee, ST=FL, C=US 
    SerialNumber: [ 03] 

] 
    Algorithm: [SHA1withRSA] 
    Signature: 
] 
*** 
*** ServerHelloDone 
main, WRITE: TLSv1 Handshake, length = 662 
main, READ: TLSv1 Alert, length = 2 
main, RECV TLSv1 ALERT: fatal, unknown_ca 
main, called closeSocket() 
+0

1) Je ne savais pas que LDAP est également sur SSL. Peut-il être? 2) Où est le code pour le client? L'exception signifie que le serveur n'est pas approuvé. – Cratylus

+0

@ user384706: Oui LDAP sur SSL (LDAPS) est très courant. – Mac

Répondre

0

Je voudrais avoir une réponse définitive, mais la question SO here et here semblent indiquer un problème avec la façon dont le certificat a été généré ou importé. Le premier suggère de régénérer sans aucune extension activée. La seconde suggère de s'assurer que le certificat que vous importez a la totalité de la chaîne (ce qui peut ne pas s'appliquer à votre certificat autosigné).

Questions connexes