Во время рукопожатия SSL, когда расширение клиента включено в клиенте, сервер не выбирает и не передает желаемый сертификат клиенту.
У меня есть цепочка сертификатов, которую я импортировала в хранилище ключей JVM на сервере.
сертификат сервера, выданный внутренним промежуточным ЦС, выдавшим сертификат.
Тема: CN = myserver.example.com
промежуточный сертификат, выданный внутренним корневым центром сертификации.
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
самоподписанный сертификат корневого CA.
X509v3 extensions:
X509v3 Key Usage:
Digital Signature, Certificate Sign, CRL Sign
X509v3 Basic Constraints: critical
CA:TRUE
Я использовал "openssl s_client" для тестирования.
Я использовал следующую команду для тестирования с расширением TLS с указанием имени сервера (SNI) отключено , и цепочка сертификатов в хранилище ключей выбирается и представляется сервером при подтверждении связи SSL. Это то, что я ожидал.
openssl s_client -connect myserver.example.com:port
Я использовал следующую команду для тестирования с расширением TLS с указанием имени сервера (SNI) с включенным , и другой сертификат (по умолчанию?) Был выбран и представлен сервером при установлении связи SSL. Этого сертификата нет в хранилище ключей. Я этого не ожидал.
openssl s_client -connect myserver.example.com:port -servername myserver.example.com
Я пытаюсь выяснить, почему сервер не выбирает мою цепочку сертификатов, которая находится в хранилище ключей, а вместо этого выбирает «другой» (по умолчанию?) Сертификат, когда расширение SNI включено. Любая помощь будет оценена.
Я не знаю, как работает выбор сертификата на сервере во время процесса рукопожатия SSL.