создание клиентских сертификатов

создание клиентских сертификатов

У меня есть SSL-сертификат от стороннего центра сертификации. Это файл .cer. Сертификат установлен и работает нормально в IIS7.

Сертификат отображает свои предполагаемые цели как «Аутентификация сервера», «Аутентификация клиента».

Сайт требует аутентификации через клиентские сертификаты. Мынетне с использованием сопоставления клиентских сертификатов, а просто с использованием клиентских сертификатов в качестве меры аутентификации — если у вас есть один, вы аутентифицированы.

  • Как создать клиентский сертификат?
  • Должен ли центр сертификации делать это, привлекая другого представителя службы сертификации?
  • Могу ли я сделать это самостоятельно с помощью другого инструмента? (OpenSSL или другого)
  • Какой формат требуется для клиентских сертификатов?

решение1

Аутентификация клиентского сертификата в IIS (или большинстве HTTPD) несколько сложна. Вам нужно сопоставить пользователей с сертификатом. Сами сертификаты могут быть выпущены любым CA, которому доверяет сервер; вы можетенастроить экземпляр AD CSвыдавать сертификаты или даже использовать локальную копиюOpenSSLдля создания сертификатов, если хотите.

Есть статья на темуIIS.netописываяСопоставление клиентских сертификатов; с информацией о его включении и программной привязке сертификатов к пользователям.

Редактировать:
Сверхкороткая версия выпуска клиентских сертификатов с помощью OpenSSL.

  1. openssl genrsa -des3 -out my_ca.key 4096
  2. openssl req -new -key my_ca.key -out my_ca.csr
  3. openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
    Теперь у вас есть сертификат и ключ CA.
  4. Для каждого из клиентских сертификатов, которые вы сгенерируете, вам понадобится запрос на подпись сертификата. Вы можете использовать один и тот же сертификат для каждого пользователя, если хотите, но это не очень хорошая идея, и вам определенно следует потребовать какую-то другую форму аутентификации (например, пароль). Либо клиенты могут сами сгенерировать CSR, либо вы можете сделать это снова с помощью openssl (обратите внимание, что для каждого CSR сначала нужен закрытый ключ):
    openssl genrsa -des3 -out client1.key 1024
    openssl req -new -key client1.key -out client1.csr
  5. Отредактируйте файл 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
    
  6. Подпишите ключ, используя сертификат CA
    openssl ca -in client1.csr -out client1.crt

  7. Если вы создали ключ и CSR для клиента, вам нужно будет их экспортировать. Экспортируйте пару сертификатов в файл PKCS12, чтобы клиент мог импортировать ее.
    openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
  8. Если вы выполнили пункт 7, отправьте клиенту созданный вами файл PKCS12; в противном случае отправьте ему сертификат из пункта 6.

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

Связанный контент