Ответ 1
Похоже, что файл PEM является сертификатом клиента, который вы можете использовать для входа на сервер. Если это сертификат клиента, и это похоже на то, что вам, вероятно, понадобится файл сертификата CA, который также будет использоваться для проверки сертификата сервера, чтобы установить соединение.
Сертификаты 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 или, как в приведенных ниже примерах, программно.
Как только вы закончите это, heres aa commons-ssl example создания сокета. Кроме того, heres Java api для SSLSocket. Heres также пример, который не использует какие-либо домены apache.