Nesse artigo iremos realizar um passo a passo para gerar um certificado autoassinado para ser utilizado na autenticação CBA (certificate-based authentication) com o Enterprise Application do CAP.
Pré-requisitos:
Utilizar uma conta administradora da máquina para realizar o procedimento.
Orientações:
No servidor do CAP, abra o Internet Information Services (IIS) Manager:
Uma vez no IIS, no menu lateral esquerdo, selecione o nome da máquina e nas opções centrais na tela, na área de IIS, selecione a opção Server Certificates:
Na tela Server Certificates, no menu lateral direito, selecione a opção Create Self-Signed Certificate:
Na tela de criação de certificados, atribua um nome ao certificado, esse nome é particular e tem como função apenas facilitar a identificação do certificado, fique à vontade para seguir os padrões de nomenclatura de seu ambiente:
Criado o certificado, ele passará a ficar visível na tela Server Certificates e pode ser identificado pela coluna Name. Encontre o certificado, clique nele com o botão direito do mouse e selecione a opção Export:
Na tela de exportação, defina o nome do arquivo, um diretório e uma senha para gerar o arquivo PFX e clique em OK:
Acesse o diretório definido e clique duas vezes sobre o arquivo PFX:
Na tela de importação, selecione a opção Local Machine e clique em Next:
Na tela seguinte, selecione o próprio arquivo PFX novamente e clique em Next:
Na próxima tela, insira a mesma senha que utilizou na criação do certificado e marque a opção para permitir a exportação da chave e clique em Next:
Na próxima tela, selecione a opção de personalizar o caminho do certificado e escolha opção Trusted Root Certification Authorities:
Confirme a seleção e clique em Next:
A tela seguinte exibirá o resumo das configurações, clique em Next:
Uma mensagem de confirmação deve ser exibida:
No menu iniciar, pesquise e abra a opção Manage computer certificates:
Na tela de gestão de certificados, no menu lateral esquerdo, selecione a opção Trusted Root Certification Authorities, em seguida Certificates, então encontre o nome do certificado gerado pela coluna Friendly Name e clique sobre a linha com o botão direito, e navege até a opção Export:
Na tela de exportação, clique em Next:
Na tela seguinte, selecione a opção para não exportar a chave privada e clique em Next:
Na tela seguinte, selecione a opção DER encoded binary X.509 (.CER) e clique em Next:
Na tela seguinte, determine um nome e um diretório para a criação do arquivo CER e clique em Next:
A próxima tela exibirá um resumo das configurações, clique em Finish:
Pronto! O certificado foi gerado e os arquivos foram disponibilizados nos diretórios selecionados durante os procedimento.
Problemas Conhecidos
Caso o parâmetro -KeySpec do comando New-SelfSignedCertificate não seja reconhecido ou se ao utilizar o certificado o erro abaixo seja apresentado, o procedimento seguinte deverá ser realizado.
Could not use the certificate for signing. See inner exception for details. Possible cause: this may be a known issue with apps build against .NET Desktop 4.6 or lower. Either target a higher version of .NET desktop - 4.6.1 and above, or use a different certificate type (non-CNG) or sign your own assertion as described at (...)
Para resolver essa situação teremos que realizar mais alguns procedimentos.
Garanta que a máquina na qual irá executar o passos seguintes possua o openssl instalado, ou execute esse procedimento através de outra máquina que o tenha.
Abra o Win64 OpenSSL Command Prompt e realize os seguintes passos:
1 - Extraia as chaves públicas do certificado, preenchendo o parâmetro in -in com o caminho completo do PFX gerado, -out com o caminho de destino do novo .cer e -passin com a senha do certificado:
OpenSSL pkcs12 -in "MYCERT.pfx" -nokeys -out "MYCERT.cer" -passin "pass:MYPWD"
----- Exemplo -----
OpenSSL pkcs12 -in "C:/Temp/CAPCert.pfx" -nokeys -out "C:/Temp/CAPCert(New).cer" -passin "pass:P@ssw0Rd1234"
2 - Extraia a chave privada do certificado preenchendo o parâmetro in -in com o caminho completo do PFX gerado, -out com o caminho de destino do arquivo .pem, -passin com a senha do certificado e -passout com a senha do certificado:
OpenSSL pkcs12 -in "MYCERT.pfx" -nocerts -out "MYCERT.pem" -passin "pass:MYPWD" -passout "pass:MYPWD"
----- Exemplo -----
OpenSSL pkcs12 -in "C:/Temp/CAPCert.pfx" -nocerts -out "C:/Temp/CAPCert.pem" -passin "pass:P@ssw0Rd1234" -passout "pass:P@ssw0Rd1234"
3 - Converta a chave privada do certificado para o formato RSA preenchendo o parâmetro in -in com o caminho do arquivo gerado no procedimento 2, -out com o caminho de destino do arquivo .rsa, -passin com a senha do certificado e -passout com a senha do certificado:
OpenSSL rsa -inform PEM -in "MYCERT.pem" -out "MYCERT.rsa" -passin "pass:MYPWD" -passout "pass:MYPWD"
----- Exemplo -----
OpenSSL rsa -inform PEM -in "C:/Temp/CAPCert.pem" -out "C:/Temp/CAPCert.rsa" -passin "pass:P@ssw0Rd1234" -passout "pass:P@ssw0Rd1234"
4 - Mescle as chaves privadas no formato RSA para um novo certificado preenchendo o parâmetro -in com o caminho do arquivo .cer gerado no procedimento 2, -inkey com o caminho do arquivo .rsa gerado no procedimento 3, -out com o caminho do novo arquivo pfx, -passin com a senha do certificado e -passout com a senha do certificado.
OpenSSL pkcs12 -export -in "MYCERT.cer" -inkey "MYCERT.rsa" -out "CONVERTED.pfx" -passin "pass:MYPWD" -passout "pass:MYPWD"
----- Exemplo -----
OpenSSL pkcs12 -export -in "C:/Temp/CAPCert(New).cer" -inkey "C:/Temp/CAPCert.rsa" -out "C:/Temp/CAPCert(New).pfx" -passin "pass:P@ssw0Rd1234" -passout "pass:P@ssw0Rd1234"
Pronto, agora os novos arquivos .pfx e .cer estão prontos para serem utilizados. Como garantia, caso o certificado que apresentou o problema tenha sido instalado na máquina, recomendamos que seja desinstalado e que esses novos arquivos sejam utilizados.