Fehler mit Verbundungsaufbau zu Imap Server

chickenwings

Erfahrenes Mitglied
Hallo,

ich versuche gerade ein Programm zu schreiben, das sich mit einem Imap-Server verbindet.
Dazu verwende ich javx.mail. Versuche ich mich zu connecten bekomme ich leider folgende Fehlermeldung:

Code:
javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target;
  nested exception is:
	javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:571)
	at javax.mail.Service.connect(Service.java:288)
	at javax.mail.Service.connect(Service.java:169)
	at handler.imap.ImapHandler.connect(ImapHandler.java:44)
	at handler.imap.ImapHandler.<init>(ImapHandler.java:29)
	at handler.imap.ImapHandler.main(ImapHandler.java:25)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Über den Browser ist die URL über https erreichbar, der Verbindung teile ich das aber nicht mit. Wie kann ich denn nun Java mitteilen, wie er sich verbinden soll?

Grüsse,
chickenwings
 
Java will die Zertifikate für die Verbindung überprüfen, du musst also einen Keystore mit dem passenden Wurzelzertifikat bereitstellen.
 
Ok, habe das keytool gefunden und das Zertifikat offensichtlich erfolgreich importiert.
Jetzt ist nur noch die Fage, wie ich es in das Programm mit Java einbinde.

Reicht es in die System Properties die Datei einzubinden:
Code:
System.setProperty("javax.net.ssl.keyStore", ".keystore");

oder muss ich den key anders laden?

chickenwings
 
Ok, ich habs hinbekommen, war doch nicht so schwer wie ich erst dachte.

Für Interessierte:

Habe zunächst das Zertifikat aus dem Browser heraus gespeichert.
Dann mit dem keystore Tool das Zertifikat installiert bzw. importiert.
In meinem Java Programm eine KeyStore Instanz als Default Typ erstellt und die KeyStore Datei in einen FileInpuStream geladen.
Danach konnte ich mich ohne Probleme auf meinen IMAP Server verbinden.

Fertig.

chickenwings
 
Zurück