Похоже, файл PEM является клиентским сертификатом, который вы можете использовать для входа на сервер. Если это клиентский сертификат, и он звучит так, как он есть, вам, вероятно, понадобится файл сертификата, который также будет использоваться при проверке сертификата сервера для установления соединения.
Сертификаты CA должны входить в хранилище доверенных сертификатов, а сертификаты вашего клиента - в хранилище ключей. В Java оба они будут JKS (хотя он имеет ограниченную поддержку PKCS12.) Для JRE, а также для каждого пользователя существуют стандартные хранилища ключей / хранилищ доверенных сертификатов. Вы также можете указать внешние местоположения для этих файлов в своем коде, как в примерах ниже. Библиотека commons-ssl, кажется, способна поддерживать PEM напрямую, без необходимости JKS, но я ее не использовал.
Парольная фраза по умолчанию для этих хранилищ ключей в Java - "changeit" без кавычек.
Эта страница показывает, что вы должны прочитать PEM в хранилище ключей / хранилище доверенных сертификатов. Вот другой пример .
После того, как вы правильно настроили склад доверенных сертификатов и хранилище ключей, вам необходимо передать следующие системные свойства JSSE в JVM:
javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStorePassword
Вы можете указать их как параметры -D для JRE или, как в примерах ниже, программно.
Когда вы закончите, вот пример *1021* создания сокета commons-ssl. Кроме того, вот Java API для SSLSocket . Вот также пример , который не использует Apache Commons.