Es klingt, als wäre die PEM-Datei ein Client-Zertifikat, mit dem Sie sich beim Server anmelden können. Wenn es das Client-Zertifikat ist, und es klingt wie es ist, werden Sie wahrscheinlich eine CA-Zertifikat-Datei auch für die Validierung des Server-Zertifikats benötigen, um eine Verbindung herzustellen.
Die CA-Zertifikate müssen in einen Truststore und Ihre Client-Zertifikate müssen in einen Keystore gehen. In Java sind dies beide JKS (obwohl PKCS12 nur eingeschränkt unterstützt wird). Es gibt Standardspeicherorte für Keystore/Truststore für die JRE sowie für jeden Benutzer. Sie können auch externe Speicherorte für diese Dateien in Ihrem Code angeben, wie in den folgenden Beispielen. Die commons-ssl-Bibliothek scheint in der Lage zu sein, PEM direkt zu unterstützen, ohne JKS zu benötigen, aber ich habe es nicht benutzt.
Die Standard-Passphrase für diese Keystores in Java ist "changeit" ohne die Anführungszeichen.
This page zeigt, dass Sie die PEM in Ihren Keystore/Truststore lesen müssen. Hier ist another example.
Sobald Sie Ihre Trusts und Schlüsselspeicher richtig eingerichtet ist, müssen Sie die folgende JSSE system properties auf Ihre JVM weitergeben müssen:
javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStorePassword
Sie können sie als -D Parameter an die JRE oder, wie in den Beispielen angeben unten, programmatisch.
Sobald Sie das abgeschlossen haben, ist ein commons-ssl example Erstellen eines Sockets. Auch, Heres die Java API für SSLSocket. Heres auch eine example, die keine Apache Commons verwendet.
Duplizieren; Ich denke, die andere Version der Frage ist informativer. – erickson