criando certificados de cliente

criando certificados de cliente

Eu tenho um certificado SSL da autoridade de certificação de terceiros. É um .cerarquivo. O certificado está instalado e funcionando corretamente no IIS7.

O certificado exibe suas finalidades pretendidas como autenticação de servidor e autenticação de cliente.

O site requer autenticação por meio de certificados de cliente. Eramnãousando mapeamento de certificado de cliente, mas simplesmente usando certificados de cliente como medida de autenticação - se você tiver um, estará autenticado.

  • Como posso criar um certificado de cliente?
  • A AC tem que fazer isso, envolvendo outro CSR?
  • Isso é algo que posso fazer sozinho com outra ferramenta? (OpenSSL ou outro)
  • Qual formato é necessário para certificados de cliente?

Responder1

A autenticação de certificado de cliente no IIS (ou na maioria dos HTTPDs) é um tanto complicada. Você precisa mapear os usuários para o certificado. Os próprios certificados podem ser emitidos por qualquer CA em que o servidor confie; você podeconfigurar uma instância do AD CSpara emitir os certificados, ou mesmo usar uma cópia local doOpenSSLpara criar os certificados, se desejar.

Há um artigo sobreIIS.netdescrevendoMapeamento de certificado de cliente; com informações sobre como habilitá-lo e associar certificados aos usuários de forma programática.

Editar:
A versão ultracurta de emissão de certificados de cliente com 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
    Agora você tem um certificado e uma chave CA.
  4. Para cada um dos certificados de cliente que você gerará, você precisará de uma solicitação de assinatura de certificado. Você pode usar o mesmo certificado para todos os usuários, se desejar, mas não é uma ideia particularmente boa e você definitivamente também deve exigir alguma outra forma de autenticação (como uma senha). Os próprios clientes podem gerar os CSRs ou você pode usar o openssl novamente (observe que cada CSR precisa primeiro de uma chave privada):
    openssl genrsa -des3 -out client1.key 1024
    openssl req -new -key client1.key -out client1.csr
  5. Edite seu arquivo openssl.cnf e preencha as partes CA relevantes. Eles são:

    [ 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. Assine a chave usando o certificado CA
    openssl ca -in client1.csr -out client1.crt

  7. Se você criou a chave e o CSR para o cliente, precisará exportá-los. Exporte o par de certificados para um arquivo PKCS12 para que o cliente possa importá-lo.
    openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
  8. Se você concluiu o item 7, envie ao cliente o arquivo PKCS12 que você criou; caso contrário, envie-lhes o certificado do nº 6.

Observe que esta é uma maneira inadequada de emitir certificados assinados porque simplesmente concede qualquer tipo de certificado especificado pelo CSR. Certifique-se de prestar atenção ao que você está fazendo. Se você for emitir muitos certificados, precisará investir algum tempo em uma configuração mais segura.

informação relacionada