#java #ssl #ssl-certificate #ssl-client-authentication
#java #ssl #ssl-сертификат #ssl-client-authentication
Вопрос:
Вот ситуация:
- Наше приложение взаимодействует с несколькими сторонними приложениями, и лишь немногие из них нуждаются в аутентификации клиента.
- Одному конкретному стороннему приложению требуется аутентификация клиента и соответствующие сертификаты (которые мы импортировали в наше хранилище ключей (JKS)). Это происходит во время интеграционного тестирования. В тестовой среде все работает нормально.
- Теперь, прежде чем приступить к работе, они хотят обновить сертификат, выданный центром сертификации.
- Для нового сертификата мы всегда можем создать новое хранилище, но для удобства хотелось бы знать, могут ли два сертификата (старый и новый) находиться в одном хранилище? (Так что в случае их отката с нашей стороны изменений не будет)
- При том же URL-адресе, как приложение (http-клиентская библиотека) узнает, какую версию клиентского сертификата (сертификатов) представлять при выполнении вызовов на сервер?
Ответ №1:
Вы можете иметь оба сертификата в truststore. JSSE выберет тот, который соответствует доверенным центрам сертификации, которые сервер сообщает, когда запрашивает сертификат клиента.
Однако сценарий, который вы описываете, радикально небезопасен. Если вы являетесь клиентом, вы должны предоставлять свой собственный сертификат клиента, а не тот, который поступает от кого-то другого. В противном случае должен быть скомпрометирован закрытый ключ, что означает, что сертификат не может быть использован для той цели, для которой он предназначен, и вы можете юридически отказаться от всех транзакций, которые предположительно аутентифицируются с помощью этого средства. Аутентификация клиента по такой схеме не имеет никакой полезной цели, и вам не следует тратить на это дополнительное время.
Комментарии:
1. Спасибо, что обратили внимание на этот юридический аспект. «Кто-то еще» на самом деле является самим поставщиком услуг. Но да, как поставщик приложений, то есть мы, должны иметь свой собственный сертификат.