При работе по протоколу HTTPS возникает проблема с сертификатами, точнее c клиентскими сертификатами с приватными ключами.
Есть поставщики услуг, которые высылают только серверный сертификат. Тогда, высланный поставщиком серверный сертификат мы импортируем в хранилище доверенных сертификатов.
Поставщиков, использующих только серверный сертификат мы можем подключать сколько угодно след образом:
./keytool -import -alias aesroot
–keystore /export/home/way4/appserver/jdk/1.6/jre/lib/security/cacerts
–file /export/home/way4/appserver/mystores/aes_ca.crt
Также есть поставщики услуг, которые высылают серверный и клиентский сертификат.
В этом случае мы указываем в коде программы или в настройках приложения следующие пути к сертификатам:
-Djavax.net.ssl.keyStore=app/config/work/keys/halyk.p12
-Djavax.net.ssl.keyStoreType=pkcs12
-Djavax.net.ssl.keyStorePassword=changeit
-Djavax.net.ssl.trustStore=app/config/work/keys/aes.keystore
-Djavax.net.ssl.trustStoreType=jks
-Djavax.net.ssl.trustStorePassword=changeit
Поставщиков, использующих серверный и клиентский сертификат мы можем подключить только одного. Если указываем несколько раз пути к клиентским сертификатам, то работает только последний указанный, предыдущие указанные пути затираются, при запросах возникает ошибка по сертификату.
Серверные сертификаты мы добавим в cacerts или создадим отдельное хранилище и укажем пути в приложении.
Но можем ли мы положить клиентские сертификаты в один файл под одним и тем же паролем, что и к самому хранилищу. Если да, то подскажите пожалуйста каким образом это можно и с помощью каких утилит? Если невозможно, подскажите пожалуйста другие пути решения проблемы, исходя из вашего опыта.