У меня есть сертификат SSL от стороннего центра сертификации. Это .cer
файл. Сертификат установлен и правильно работает в IIS7.
Сертификат отображает его предполагаемые цели как проверка подлинности сервера и проверка подлинности клиента.
Сайт требует аутентификации через клиентские сертификаты. Мы не используя сопоставление сертификатов клиента, но просто используя сертификаты клиента как меру аутентификации - если он у вас есть, вы аутентифицированы.
Аутентификация сертификата клиента в IIS (или большинстве HTTPD) несколько сложна. Вы должны сопоставить пользователей с сертификатом. Сами сертификаты могут быть выпущены любым центром сертификации, которому доверяет сервер; ты можешь настроить экземпляр AD CS выдавать сертификаты или даже использовать локальную копию OpenSSL для создания сертификатов, если хотите.
Есть статья о IIS.net описание Сопоставление сертификатов клиента; с информацией о его включении и программном связывании сертификатов с пользователями.
Редактировать:
Ультракороткая версия выдачи клиентских сертификатов с помощью OpenSSL.
openssl genrsa -des3 -out my_ca.key 4096
openssl req -new -key my_ca.key -out my_ca.csr
openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
openssl genrsa -des3 -out client1.key 1024
openssl req -new -key client1.key -out client1.csr
Отредактируйте файл openssl.cnf и заполните соответствующие части CA. Они есть:
[ ca ]
default_ca = CA_default # The default ca section
[ CA_default ]
dir = ./ # top dir
database = $dir/my_ca.index # index file.
new_certs_dir = $dir/newcerts # new certs dir
certificate = $dir/my_ca.crt # The CA cert
serial = $dir/my_ca.srl # serial no file
private_key = $dir/my_ca.key # CA private key
RANDFILE = $dir/rand # random number file
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # md to use
policy = policy_any # default policy
email_in_dn = no # Don't add the email into cert DN
name_opt = ca_default # Subject name display option
cert_opt = ca_default # Certificate display option
copy_extensions = none # Don't copy extensions from request
[ policy_any ]
countryName = supplied
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
Подпишите ключ с помощью сертификата CA
openssl ca -in client1.csr -out client1.crt
openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
Обратите внимание, что это плохой способ выдавать подписанные сертификаты, потому что он просто предоставляет любой тип сертификата, указанный CSR. Обязательно обращайте внимание на то, что вы делаете. Если вы собираетесь выпустить много сертификатов, вам нужно потратить некоторое время на более безопасную настройку.