Еще одна устаревшая проблема поддержки здесь!
У нас есть серверная сеть с несколькими клиентами, где каждый компонент имеет самозаверяющий сертификат и добавляется в хранилище доверенных сертификатов сервера/клиента. Мы не используем центр сертификации.
Теперь наша проблема заключается в том, что нам нужно обновить все сертификаты для большей безопасности. Новые клиенты будут поставляться с более новыми сертификатами, и даже сервер будет иметь новые сертификаты.
Наша проблема заключается в том, как обращаться со старыми клиентами. Обновление хранилищ ключей наших старых клиентов — это последнее средство.
Вещи, которые не будут работать:
Добавление нового и старого сертификатов в хранилище доверенных сертификатов сервера: даже клиенты аутентифицируют серверы, и сертификат сервера не будет присутствовать в хранилище доверенных сертификатов клиента.
Использование нового порта для новых клиентов: мы рассматривали возможность использования новых портов для новых клиентов и сохранения старых портов для старых клиентов, но проблема в том, что существует несколько приложений, которые сталкиваются с этой проблемой, поэтому нам придется искать несколько новых портов, которые не используется другими продуктами.
FWIW: серверы на Java, а клиенты на C++.
ИЗМЕНИТЬ после ответа EJP
Вероятно, я задаю здесь очень глупый вопрос, но просто хотел убедиться. Нет абсолютно никакого способа редактировать SSL-контекст сокета после его привязки. Верно?
Кроме того, можем ли мы выбрать сертификат сервера, который будет использоваться во время рукопожатия? Я знаю о методах chooseClientAlias()
и chooseServerAlias()
, но здесь мы не знаем, какой сертификат использовать, пока не будет отправлено приветственное сообщение клиента.