Мой вопрос несколько связан с этим вопросом в Stackoverflow. Однако мой сервер будет прослушивать один порт. Сервер будет доверять клиенту только в том случае, если он найдет у себя сертификат открытого ключа клиента. Я хочу, чтобы клиент отправлял имя, если его сертификат открытого ключа (при обычном небезопасном соединении), который сервер будет искать в своей собственной файловой системе. Если сервер находит сертификат, он преобразует старое небезопасное клиентское соединение в соединение SSL. Это вообще возможно? Если да, то как?
Как добавить несколько источников доверия на сервер
Ответы (2)
Вы, кажется, не понимаете, как на самом деле работает SSL. Если вы настроите его так, что требуется аутентификация клиента, клиент отправит свой сертификат во время рукопожатия, а сервер сможет получить его и проверить любым удобным для него способом. В Java это означает установку HandshakeCompletedListener
на сервере или использование SSLSocket.getSession.getPeerCertificate().
.
person
user207421
schedule
26.04.2013
Да, я должен признать, что я не совсем понимаю его. Однако будет ли неправильно, если я скажу, что серверу необходимо связаться с ЦС для проверки личности клиента (или, другими словами, сервер должен иметь доступ к открытому ключу, поддерживаемому ЦС)?
- person TheRookierLearner; 26.04.2013
Кроме того, было бы очень полезно, если бы вы указали некоторые ресурсы для понимания теории, стоящей за этим, а также некоторые ресурсы по программированию.
- person TheRookierLearner; 26.04.2013
Я предложил один в вашей другой теме.
- person user207421; 26.04.2013
Я, Справочное руководство JSSE и ссылка IBM. Полагаю, для них нет книг.
- person TheRookierLearner; 26.04.2013
Серверу не нужно связываться с ЦС. На сервере уже есть цепочка клиентских сертификатов, и пока его хранилище доверенных сертификатов доверяет одному из подписывающих лиц в цепочке, идентификация устанавливается. Вам также необходимо прочитать PKI сертификата X.509.
- person user207421; 27.04.2013
Вы можете сделать это, выполнив POST
запрос поверх обычного HTTP
отправив на сервер имя сертификата клиента.
В ответе может быть результат, указывающий клиенту повторно подключиться к серверу через SSL через другой порт.
Использование одного порта для HTTP
и HTTPS
, как вы ожидаете, невозможно и не имеет смысла.
Ваше требование в целом не имеет смысла, ИМХО.
person
Cratylus
schedule
26.04.2013