Назад | Перейти на главную страницу

Взаимная SSL-аутентификация - сертификат клиента против сертификата сервера

Я настраиваю веб-приложение, которое будет подключаться к удаленной веб-службе и должно использовать сертификат клиента. Мое веб-приложение использует HTTPS для подключения, и оно настроено с использованием существующего подстановочного сертификата для моего домена.

Могу ли я использовать свой открытый ключ из подстановочного сертификата в качестве сертификата клиента? Мне нужно предоставить его администраторам удаленных веб-служб, чтобы они могли добавить его в список доверенных клиентских сертификатов.

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

Одним из недостатков является то, что ваш закрытый ключ теперь может находиться на двух машинах.

Ключ клиента должен быть закрытым по определению. Если он общий, то он не личный.

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

В вашем вопросе не указано, используете ли вы собственный центр сертификации или коммерческий центр сертификации. Если он коммерческий, вы, возможно, нарушите условия CA, поделившись закрытым ключом.

Лучше всего просто создать еще один сертификат для вашего клиента. Если вы используете свой собственный ЦС, просто создайте другой сертификат. Если он коммерческий, либо купите новый сертификат для своего клиента, либо получите свободный. В любом случае, если в вашем сертификате будет поле «Расширенное использование ключа», убедитесь, что оно содержит «Проверка подлинности клиента» (вместо «Проверка подлинности сервера»).

Как вы пояснили, ваша установка - это одна машина, действующая как клиент и сервер. В этой ситуации вам нужно знать о небольшой разнице в профилях сертификатов для аутентификации сервера и аутентификации клиента:

Сертификат сервера будет иметь DNS-имя сервера как CommonName (CN) или Subject Alternate Name (SAN), либо и то, и другое. Сертификат клиента будет обычно укажите свой адрес электронной почты в качестве CN, хотя нет никаких причин, по которым это не может быть что-то другое.

Расширение Extended Key Usage для сертификата сервера должно быть server authentication, а для сертификата клиента это должно быть client authentication. Это может вызвать проблемы.