Похоже, что файл PEM является сертификатом клиента, который вы можете использовать для входа на сервер. Если это сертификат клиента, и это похоже на то, что вам, вероятно, понадобится файл сертификата CA, который также будет использоваться для проверки сертификата сервера, чтобы установить соединение.
Сертификаты CA должны зайти в доверительное учреждение, и ваши сертификаты клиента должны войти в хранилище ключей. В Java оба из них будут JKS (хотя он имеет ограниченную поддержку PKCS12.) Для JRE, а также для каждого пользователя существуют местоположения хранилища ключей/доверенных мест по умолчанию. Вы также можете указать внешние местоположения для этих файлов в своем коде, как в приведенных ниже примерах. Библиотека commons-ssl, похоже, может поддерживать PEM напрямую, без необходимости JKS, но я ее не использовал.
Ключевая фраза по умолчанию для этих хранилищ ключей в Java «changeit» без кавычек.
This page показывает, что вы должны прочитать PEM в своем хранилище ключей/truststore. Вот another example.
После того, как вы ваше и доверенное хранилище ключей настроены должным образом, вам необходимо пройти следующий JSSE system properties к вашей виртуальной машине Java:
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 или, как в примерах ниже, программно.
Как только вы закончите это, heres a commons-ssl example создания сокета. Кроме того, heres Java api для SSLSocket. Heres также имеет example, который не использует какие-либо активы apache.
Duplicate; Я думаю, что другая версия вопроса более информативна. – erickson