criando certificados de cliente

1

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

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

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

  • Como posso criar um certificado de cliente?
  • A CA precisa fazer isso, envolvendo outro CSR?
  • Isso é algo que eu posso fazer com outra ferramenta? (OpenSSL ou outro)
  • Qual formato é necessário para certificados de cliente?
por p.campbell 09.08.2010 / 19:50

1 resposta

5

A autenticação de certificado de cliente no IIS (ou na maioria dos HTTPDs) é um pouco complicada. Você precisa mapear os usuários para o certificado. Os próprios certificados podem ser emitidos por qualquer autoridade de certificação na qual o servidor confie; você pode configura uma instância do AD CS para emitir os certificados, ou até mesmo usar uma cópia local de OpenSSL para criar os certificados se você quiser.

Há um artigo sobre IIS.net descrevendo Mapeamento de certificado de cliente ; com informações sobre como ativá-lo e associar programaticamente certificados a usuários.

Editar:
A versão ultracurta da emissão de certificados do cliente com o 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 de autoridade de certificação e uma chave.
  4. Para cada um dos certificados de cliente gerados, você precisa de uma solicitação de assinatura de certificado. Você pode usar o mesmo certificado para cada usuário se quiser, mas não é uma boa idéia e você definitivamente deve exigir alguma outra forma de autenticação (como uma senha). Os clientes podem gerar os próprios CSRs, ou você pode com o openssl novamente (observe que cada CSR precisa de uma chave privada primeiro):
    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 relevantes da CA. 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. Assinar a chave usando o certificado da 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 # 7, envie ao cliente o arquivo PKCS12 que você criou; caso contrário, envie-lhes o certificado do nº 6.

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

    
por 09.08.2010 / 20:49