Добавить различные сертификаты p12 в jvm - PullRequest
1 голос
/ 22 мая 2019

У меня в приложении разные службы, использующие SSL, эти службы используют разные файлы .p12 для соединения с разными паролями. Прямо сейчас java загружает хранилище доверенных сертификатов и хранилище ключей + файлы при каждом вызове, поэтому я хочу удалить это поведение и добавить сертификаты в мою JVM по умолчанию, это то, что я могу сделать с помощью

-Djavax.net.ssl.keyStore="{mycert.p12}" -Djavax.net.ssl.keyStorePassword={mypassword} -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.trustStore="{cacertsroute}" -Djavax.net.ssl.trustStorePassword=changeit

Но у меня разные файлы p12, поэтому мне нужно объединить их в один файл, потому что я не могу указать jvm использовать несколько файлов p12 и паролей в командной строке.

Я создал новый файл p12 пустым и добавил один из файлов p12 внутрь, используя keytool

keytool -importkeystore -srckeystore first.p12 -srcstoretype pkcs12 -srcstorepass firstp12pass -destkeystore newstore.p12 -deststoretype pkcs12 -deststorepass firstp12pass

После этого у меня новое хранилище ключей только с одним p12, и оно работает со службой, использующей сертификат first.p12. Я прочитал, что хранилище ключей и p12 должны иметь один и тот же пароль, поэтому для добавления второго файла p12 я создал файл temp.p12, который изменяет пароль second.p12 на firstp12pass, так что теперь у них один и тот же пароль, а затем я используйте ту же команду, что и раньше, чтобы добавить temp.p12 (который является second.p12) в newstore.p12.

Теперь у меня есть только 1 файл с двумя записями для разных сервисов, но когда я использую сертификат, он сейчас не работает.

Я отладил вызов ssl, и кажется, что CN не в порядке. Когда я звоню с p12 только с одной записью, он отправляет правильный CN на сервер, но когда я использую 2 записи, он не выбирает правильную.

Может ли кто-нибудь помочь мне с этим? Возможно, невозможно смешать файлы или есть другой способ сделать это.

Спасибо

1 Ответ

0 голосов
/ 23 мая 2019

Похоже, вы делаете это, чтобы включить взаимную аутентификацию сертификатов, в отличие от настройки простого коннектора HTTPS.

Я бы предложил объединить сертификаты в один .pfx, экспортировав их оба в виде открытого текста * 1004.* файлы и их объединение.Это также может быть использовано для создания цепочек сертификатов вручную.

  1. Конвертировать PFX в PEM (преобразовать оба файла PFX): openssl pkcs12 -in example.pfx -out example.pem -nodes
  2. Объединить оба файла PEM , включая теги BEGIN CERTIFICATE и END CERTIFICATE
  3. Преобразование объединенного файла PEM обратно в PFX: openssl pkcs12 -export -in example.pem -out example-concat.pfx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...