Можно ли автоматически выбрать правильный сертификат на стороне клиента? - PullRequest
2 голосов
/ 24 мая 2011

Я настроил веб-сайт Apache httpd с SSL-сертификатами на стороне клиента, чтобы только пользователи, которые установили правильный сертификат в своих веб-браузерах, могли получить доступ к веб-сайту.

Если установлен только один сертификат на стороне клиента, веб-браузер автоматически выберет его (это не значение по умолчанию, но его можно настроить где-то в диалоге настроек). Но если у пользователя установлено более одного сертификата, веб-браузер отображает список сертификатов, и пользователь должен выбрать правильный, чтобы продолжить.

Вопрос: существует ли способ настроить httpd для отправки подсказки, чтобы веб-браузер мог автоматически выбирать необходимый сертификат?

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Протокол SSL (TLS) позволяет серверу указывать только два ограничения для сертификата клиента:

  1. Тип сертификата (RSA, DSA и т. Д.)
  2. доверенные центры сертификации (CA), подписавшие сертификат клиента

Вы можете использовать "openssl s_client" , чтобы узнать, каким CA ваш сервер Apache доверяет для клиентских сертификатов. Я не знаю, как настроить Apache для изменения этого списка (извините), но я уверен, что есть способ. Поэтому, если вы можете ограничить список (скажем) только CA вашей организации, то вы сделаете все возможное, чтобы веб-браузер автоматически выбирал сертификат клиента.

Как сказал Юджин, зависит ли браузер на самом деле от конкретного браузера.

1 голос
/ 27 мая 2011

В дополнение к тому, что сказали @Nemo и @Eugene, по умолчанию Apache Httpd отправит список CA, полученных из директив конфигурации SSLCACertificateFile или SSLCACertificatePath.

Однако вы можете заставить его отправлять другой список в certificate_authorities, используя директивы SSLCADNRequestFile или SSLCADNRequestPath и указывая им другой набор сертификатов. Используется только DN субъекта этих сертификатов (и отправляется в списке). Если вы хотите принудительно установить определенные имена, вы можете даже самостоятельно подписать эти сертификаты, используя любое другое имя. Я пробовал это (в сочетании с SSLVerifyClient optional_no_ca, и вы можете заставить клиентов отправлять сертификаты для сертификатов CA, которых на самом деле нет на сервере. (Это не обязательно полезно, но работает.)

1 голос
/ 24 мая 2011

Я бы сказал, что, поскольку выбор сертификата является задачей на стороне клиента, нет определенного способа заставить клиента использовать тот или иной сертификат со стороны сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...