
Eu tenho um certificado SSL da autoridade de certificação de terceiros. É um .cer
arquivo. 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.
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
Agora você tem um certificado e uma chave CA.- 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
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
Assine a chave usando o certificado CA
openssl ca -in client1.csr -out client1.crt
- 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
- 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.