Pular para conteúdo

Microsoft IIS

Informações Gerais

Este guia de uso integrado com o MS IIS (Microsoft Internet Information Services) foi preparado usando as versões de software e firmware abaixo:

  • SO: Windows Server 2019 (inglês)
  • IIS: 10
  • Firmware do HSM: 5.0.26.0 (ou superior)
  • Cliente do HSM: 4.7.30 (ou superior)
  • Utilitário hsmutil: 4.7.30 (ou superior)

Requisitos

  1. Conectividade com o HSM (porta TCP 4433).
  2. Software client do HSM instalado, (consulte o tópico Windows).
  3. Utilitário hsmutil.exe baixado, (verificar aqui).
  4. Serviço do HSM iniciado.
  5. Conta do Windows com permissão de administração local.
  6. Credenciais da partição do HSM onde será criada ou importada a chave privada.
  7. Pode ser necessário um restart do Windows (para carregar as configurações de local machine).

Chave gerada no HSM

Chave e CSR gerados no HSM via IIS Manager.

  1. Criar uma Crypto Provider da Dinamo do Tipo RSA Channel (tipo 12) usando a seguinte entrada na registry.

    Windows Registry Editor Version 5.00
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider\Dinamo SChannel Cryptographic Provider]
    "Image Path"="tacndcsp.dll"
    "type"=dword:0000000c
    
  2. Configurar os parâmetros MS CAPI com as credenciais de partição do HSM na console GUI (Dinamocon).

    Configurar endereço IP, nome e senha de uma partição no HSM; e habilitar CNG. A chave privada será gerada nesta partição.

    Nota

    Manter desmarcada a opção Local Machine Configuration.

    Configuração MS CAPI
    Configuração MS CAPI

  3. Abrir tela de gerência do IIS (IIS Manager)

    _IIS Manager_
    IIS Manager

  4. Na tela Home do IIS Manager abrir a opção de Server Certificates.

    _IIS Manager_, gerência de certificados
    IIS Manager, gerência de certificados

  5. Usar a opção Create Certificate Request... para gerar um CSR (Certificate Signing Request).

    _IIS Manager_, criação de certificados
    IIS Manager, criação de certificados

  6. Preencher as informações dos campos que irão compor o certificado.

    _IIS Manager_, campos de certificados
    IIS Manager, campos de certificados

  7. Escolher a Crypto Provider da Dinamo e o tamanho da chave privada

    _IIS Manager_, seleção do provider Dinamo
    IIS Manager, seleção do provider Dinamo

  8. Anotar o caminho e o nome do arquivo com o CSR gerado.

    _IIS Manager_, caminho arquivo CSR
    IIS Manager, caminho arquivo CSR

    arquivo CSR
    -----BEGIN NEW CERTIFICATE REQUEST-----
    MIIEbzCCA1cCAQAwZTELMAkGA1UEBhMCQlIxCzAJBgNVBAgMAmRmMREwDwYDVQQH
    DAhicmFzaWxpYTEPMA0GA1UECgwGZGluYW1vMRcwFQYDVQQLDA5lbmctY3NwLWRp
    bmFtbzEMMAoGA1UEAwwDbGFiMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
    AQEAwENg32Rg9IzuD6wN78syqPLx+OTr9WDWdoaCdKzHGv4ZowZn7svsKc0/HKq6
    5m/AyvpUlkDuXF9PJ0TihCcgcTSBDGS5tzdK7b+e+gBC8Jgb1TjE1JnGSbunbKh4
    ApPLUCY42tp88fkabvz3Iqp+dHHIDsjG2MDqKrZBX8YXKNPJzJTBihn5glH6unWv
    9SrwXZn7AwKqnNQ8NLf1xwQBDQ4b5hzDovmtKhwC39ekhx5Yrtlo8LJ/WM/Lphgk
    9UbHpCz4w+L+nZ1FuiS2Fqbi80d1U/YvJuC4X5A5lWxiVLevwH+zmqm+bfKqlOmB
    5g68dtxBBh9rvRp6aYOCHxn+sQIDAQABoIIBwzAcBgorBgEEAYI3DQIDMQ4WDDEw
    LjAuMTc3NjMuMjBPBgkrBgEEAYI3FRQxQjBAAgEFDA9XSU4tUlZEUDJSUTdISkoM
    HVdJTi1SVkRQMlJRN0hKSlxBZG1pbmlzdHJhdG9yDAtpbmV0bWdyLmV4ZTBkBgor
    BgEEAYI3DQICMVYwVAIBAR5MAEQAaQBuAGEAbQBvACAAUwBDAGgAYQBuAG4AZQBs
    ACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgMB
    ADCB6wYJKoZIhvcNAQkOMYHdMIHaMA4GA1UdDwEB/wQEAwIE8DATBgNVHSUEDDAK
    BggrBgEFBQcDATCBkwYJKoZIhvcNAQkPBIGFMIGCMAcGBSsOAwIHMAoGCCqGSIb3
    DQMHMA4GCCqGSIb3DQMEAgIAgDALBglghkgBZQMEASowCwYJYIZIAWUDBAEtMAsG
    CWCGSAFlAwQBFjALBglghkgBZQMEARkwCwYJYIZIAWUDBAECMAsGCWCGSAFlAwQB
    BTANBggqhkiG9w0DAgIBcDAdBgNVHQ4EFgQUjLWAfxVSmthFnKb2sIIIryIwDgcw
    DQYJKoZIhvcNAQEFBQADggEBAHruyMBExrnqh8m70dr2CPcIA3Tz23TIYjgaGT+p
    PirrYJA9vzf5xaBYD/ghvRHk1LFzw/20CKETFb9qGIH9iUpEH8LVXz3CkuztFxBN
    7kcRzW5GO7Xs0C5PhIxPq6ktMsJsWext46LsyNdWD1UOQAPvA5/wPHYe8CvJSmTv
    vzUsEkomeGkcR/Y6yX/JeSXXP7qC74D5UWsoY6rWJ67TV9Ox+H+T17iG1n9V/1Z3
    GKouUAWFTRddYvbX/jqrfIQVpdSOR04xCkIgn9p9Kqd+pbgFG0SpMirIpAkR+j9a
    GT1ckY65z0yvARxdwkFjvCdePvMuyVdlaucjbb2//m61Fc0=
    -----END NEW CERTIFICATE REQUEST-----
    

    Será gerada uma chave privada RSA na partição do HSM. O nome (id) desta chave é definido pelo IIS Manager. Identifique e anote o nome da chave gerada, ele será utilizado mais adiante. Pode ser útil deixar a console CLI hsmcon.exe (linha de comando) mostrando em tempo real a atividade do HSM (opção Logs/Follow) para identificar o nome/id da chave privada gerada.

    Log no HSM
    2021/02/16 17:45:21 00003CE8 00039289 000A3309 session thread up [3]
    2021/02/16 17:45:21 00003CE8 0003928A 678CC86D e-conn: 208.115.199.22|208.115.199.22 10.61.53.  60:443 -
    2021/02/16 17:45:21 00003CE8 0003928B 000A3309 session thread down [2]|208.115.199.22 10.61.53. 60:443 -
    2021/02/16 17:45:24 00003CE7 0003928C DCED7818 new key iispart/CSP0670045F, t: 6, a: 00000001,  c: 31|10.61.53.163 10.61.53.60:4433 iispart
    2021/02/16 17:45:24 00003CE7 0003928D DCED7818 R_COOR trying to setup 12EAD6FB1E46ABCB 04|10.61.   53.163 10.61.53.60:4433 iispart
    2021/02/16 17:45:24 00003CE7 0003928E DCED7818 R_COOR prepared 12EAD6FB1E46ABCB 04|10.61.53.163    10.61.53.60:4433 iispart
    2021/02/16 17:45:24 00003CE7 0003928F DCED7818 iispart/CSP0670045F created|10.61.53.163 10.61.  53.60:4433 iispart
                                                   ^^^^^^^ ^^^^^^^^^^^ ^^^^^^^ # (1)!
    2021/02/16 17:45:24 00003CE7 00039290 DCED7818 pk iispart/CSP0670045F!F7md3iGOTL34+gRTEo/4okX   +CR719IPywZ2+yqVpegc=, c: 31|10.61.53.163 10.61.53.60:4433 iispart
    
    1. Geração da chave no HSM
  9. Levar o CSR até uma Autoridade Certificadora (AC) para a emissão do certificado.

    Este passo é externo e depende completamente do procedimento da AC escolhida. Anotar o caminho e nome do certificado (arquivo *.cer) recebido da AC.

  10. No IIS Manager use a opção Complete Certificate Request....

    _IIS Manager_, completar o processo de requisição do certificado
    IIS Manager, completar o processo de requisição do certificado

  11. Informar o arquivo do certificado emitido pela AC.

    _IIS Manager_, informar o caminho do arquivo de certificado recebido pela AC
    IIS Manager, informar o caminho do arquivo de certificado recebido pela AC

  12. No final do processo o certificado deverá estar listado no IIS Manager para ser utilizado nos Sites gerenciados pelo IIS.

    _IIS Manager_, lista de certificados SSL
    IIS Manager, lista de certificados SSL

    Nota

    O IIS Manager vai fazer a associação entre chave privada e certificado o Provider CSP na conta do usuário. No passo esta associação será refeita para o Provider CNG e na conta da máquina local (local machine).

  13. (Re)fazer associação da chave com o certificado no Provider CNG Dinamo na conta da máquina local utilizando o hsmutil.exe. Esta reassociação é necessário para que o Local Security Authority Subsystem Service do Windows possa utilizar a chave gerada no HSM.

    Executar o utilitário hsmutil.exe com os parâmetros abaixo. Os valores de <id da chave no HSM> e <hash/fingerprint do certificado> devem ser substituídos conforme explicado a seguir.

    hsmutil -j certassignkey -csp "Dinamo HSM Cryptographic Provider" -store local_machine -repo My    -container <id da chave no HSM> -keyspec cng -certhash <hash/fingerprint do certificado>
    

    O <id da chave no HSM> é nome da chave privada gerada no passo acima e identificada. Ele é mostrado também na lista de chaves da partição escolhida do HSM.

    Chave RSA no HSM
    Dinamo - Remote Management Console v. 4.7.29.0 2018 (c) Dinamo Networks
    
    HSM 10.61.53.60 e - Engine 5.0.27.0 (DCD) - TCA0000000  - ID iispart
                                                                    ^^^^^^^
    
    Keys/Objects - List
    
    
    Name                                      Type                 T E Label
    ================================================================================
    CSP0670045F                               rsa2048              n y
    ^^^^^^^^^^^ # (1)!
    
    Total of objects: 1
    
    Press ENTER key to continue...
    
    1. Chave RSA no HSM

    O <hash/fingerprint do certificado> pode ser verificado diretamente no certificado emitido pela AC, usando o utilitário do Windows certutil (linha de comando) ou abrindo o arquivo do certificado no visualizador do Windows.

    Verificação do hash do certificado
    PS > certutil <arquivo do certificado> | Select-String 'Cert Hash\(sha1\):'
    
    Cert Hash(sha1): fe8c1b7e672edbc7004a177bc4fad5244c91f4b9
    

    Hash ou figerprint do certificado
    Hash ou figerprint do certificado

    Exemplo de usdo comando de associação
    hsmutil -j certassignkey -csp "Dinamo HSM Cryptographic Provider" -store local_computer -repo   My -container CSP0670045F -keyspec cng -certhash fe8c1b7e672edbc7004a177bc4fad5244c91f4b9
    
  14. Alterar a configuração da MS CAPI para a conta de máquina local.

    Na console cliente (Dinamocon) do HSM habilite a opção Local Machine configuration.

    Configuração MS CAPI com configuração para conta de máquina local
    Configuração MS CAPI com configuração para conta de máquina local

    Nota

    O teste de conexão vai deixar de funcionar pois a configuração é transferida da conta do usuário logado para a conta de máquina local.

  15. No IIS Manager ir até o site (abaixo do ramo Sites) onde será feito o binding do protocolo HTTPS com o certificado. Por exemplo o Default Web Site.

    _IIS Manager_, _Default Web Site_, opção de _Binding_
    IIS Manager, Default Web Site, opção de Binding

  16. Na opção Bindings... clique em Add para criar um novo binding

    _IIS Manager_, _Default Web Site_, _Bindings_
    IIS Manager, Default Web Site, Bindings

  17. Na tela de Add Site Binding em Type selecione https e em SSL Certificate selecione o certificado emitido pela AC e importado acima.

    _IIS Manager_, _Default Web Site_, detalhes do Novo _Binding_
    IIS Manager, Default Web Site, detalhes do Novo Binding

  18. Testar a configuração com acesso via navegador ao endereço do site configurado.

    A partir de um navegador verifique se o endereço do site configurado pode ser acessado via protocolo https. Confira se o certificado utilizado foi o configurado acima.

    Nesta verificação pode ser útil deixar a console CLI hsmcon.exe (linha de comando) mostrando em tempo real a atividade do HSM (opção Logs/Follow) e verificando que a chave privada está sendo ativada para o fechamento do túnel SSL.

    Logs no HSM
    2021/02/16 19:45:05 00003F80 00039C37 13D1B59C iispart auth init, c: 41|10.61.53.163 10.61.53.  60:4433 -
    2021/02/16 19:45:05 00003F80 00039C38 13D1B59C iispart auth ok, 10.61.53.163, 6|10.61.53.163 10.   61.53.60:4433 -
                                                   ^^^^^^^ # (1)!
    2021/02/16 19:45:05 00003F80 00039C39 13D1B59C rsa CSP0670045F!F7md3iGOTL34+gRTEo/4okX +CR719IPywZ2+yqVpegc=, c: 41|10.61.53.163 10.61.53.60:4433 iispart
                                                   ^^^ ^^^^^^^^^^^ # (2)!
    2021/02/16 19:45:05 00003F80 00039C3A 13D1B59C e-conn: 10.61.53.163|10.61.53.163 10.61.53.   60:4433 iispart
    2021/02/16 19:45:05 00003F80 00039C3B 000A3309 session thread down [5]|10.61.53.163 10.61.53.   60:4433 iispart
    
    1. Autenticação no HSM
    2. Uso da chave no HSM

Chave gerada fora do HSM

  1. Configurar os parâmetros MS CAPI com as credenciais de partição do HSM na console GUI (Dinamocon).

    Configurar endereço IP, nome e senha de uma partição no HSM; e habilitar CNG. A chave privada será gerada nesta partição.

    Nota

    Manter desmarcada a opção Local Machine Configuration.

    Configuração MS CAPI
    Configuração MS CAPI

  2. Importar o arquivo .pfx no HSM com a console hsmcon.exe (linha de comando).

    Anotar o nome da chave privada e do certificado importados no HSM.

    Importação de um arquivo .pfx no HSM
    Dinamo - Remote Management Console v. 4.7.30.0 2018 (c) Dinamo Networks
    
    HSM 10.61.53.60 e - Engine 5.0.27.0 (DCD) - TCA0000000  - ID iispart
    
    Keys/Objects - Import - Asymmetric Keys - PKCS#12
    
    File (local) : iispart.pfx
    Private key password : ********
    Exportable (y/[n]):
    Define an Usage Profile (y/[n]):
    Private key name : sslkey
    X.509 certificate name (HSM) : sslcert
    Public key name (ENTER for none) :
    
    File loaded successfully.
    
    Press ENTER key to continue...
    
  3. Exportar o certificado do HSM para um arquivo (.cer) com a console hsmcon.exe (linha de comando).

    Exportação do certificado
    Dinamo - Remote Management Console v. 4.7.30.0 2018 (c) Dinamo Networks
    
    HSM 10.61.53.60 e - Engine 5.0.27.0 (DCD) - TCA0000000  - ID iispart
    
    Keys/Objects - Export - Certificate / PKCS#7 / File
    
    Name (HSM) : sslcert
    Output File (local) (ENTER to dump on screen) : ssliss.cer
    
    File exported successfully.
    
    Press ENTER key to continue...
    
  4. Importar o certificado (.cer) para o repositório do Computador Local usando o Snap-in para Certificates (Local Machine) do Microsoft Management Console (MMC) do Windows no computador local.

    Nota

    Importar o arquivo .cer (certificado), não o arquivo .pfx (chave privada).

    MMC, adicionar um Snap-in
    MMC, adicionar um Snap-in

    MMC, selecione Snap-in de cerificados
    MMC, selecione Snap-in de cerificados

    MMC, selecionar certificados de local machine
    MMC, selecionar certificados de local machine

    MMC, importar o certificado
    MMC, importar o certificado

    MMC, informar o caminho do arquivo do certificado
    MMC, informar o caminho do arquivo do certificado

    MMC, confirmar o store de certificados My
    MMC, confirmar o store de certificados My

    MMC, lista de certificados
    MMC, lista de certificados

    Nota

    O ícone do certificado na lista não mostra uma chave, pois apenas o certificado foi importado.

  5. (Re)fazer associação da chave com o certificado no Provider CNG Dinamo na conta da máquina local utilizando o hsmutil.exe. Esta reassociação é necessário para que o Local Security Authority Subsystem Service do Windows possa utilizar a chave gerada no HSM.

    Executar o utilitário hsmutil.exe com os parâmetros abaixo.

    hsmutil -j certassignkey -csp "Dinamo HSM Cryptographic Provider" -store local_computer -repo   My -container <id da chave no HSM> -keyspec cng -certhash <hash/fingerprint do certificado>
    

    O <id da chave no HSM> é nome da chave privada importada no passo acima e identificada.

    O <hash/fingerprint do certificado> pode ser verificado diretamente no certificado emitido pela AC, usando o utilitário do Windows certutil (linha de comando) ou abrindo o arquivo do certificado no visualizador do Windows.

    PS > certutil <arquivo do certificado> | Select-String 'Cert Hash\(sha1\):'
    
    Cert Hash(sha1): fe8c1b7e672edbc7004a177bc4fad5244c91f4b9
    

    Hash ou figerprint do certificado
    Hash ou figerprint do certificado

    Exemplo de usdo comando de associação:

    hsmutil -j certassignkey -csp "Dinamo HSM Cryptographic Provider" -store local_computer -repo   My -container sslkey -keyspec cng -certhash fe8c1b7e672edbc7004a177bc4fad5244c91f4b9
    

    Após a associação com sucesso entre certificado e chave privada o ícone do certificado na lista do Snap-in do MMC deve exibir uma chave.

    MMC, lista de certificados, com indicação de chave associada
    MMC, lista de certificados, com indicação de chave associada

  6. Alterar a configuração da MS CAPI para a conta de máquina local.

    Na console cliente (Dinamocon) do HSM habilite a opção Local Machine configuration.

    Configuração MS CAPI com configuração para conta de máquina local
    Configuração MS CAPI com configuração para conta de máquina local

    Nota

    O teste de conexão vai deixar de funcionar pois a configuração é transferida da conta do usuário logado para a conta de máquina local.

  7. No IIS Manager ir até o site (abaixo do ramo Sites) onde será feito o binding do protocolo HTTPS com o certificado. Por exemplo o Default Web Site.

    _IIS Manager_, _Default Web Site_, opção de _Binding_
    IIS Manager, Default Web Site, opção de Binding

  8. Na opção Bindings... clique em Add para criar um novo binding

    _IIS Manager_, _Default Web Site_, _Bindings_
    IIS Manager, Default Web Site, Bindings

  9. Na tela de Add Site Binding em Type selecione https e em SSL Certificate selecione o certificado emitido pela AC e importado acima.

    _IIS Manager_, _Default Web Site_, detalhes do Novo _Binding_
    IIS Manager, Default Web Site, detalhes do Novo Binding

  10. Testar a configuração com acesso via navegador ao endereço do site configurado.

    A partir de um navegador verifique se o endereço do site configurado pode ser acessado via protocolo https. Confira se o certificado utilizado foi o configurado acima.

    Nesta verificação pode ser útil deixar a console CLI hsmcon.exe (linha de comando) mostrando em tempo real a atividade do HSM (opção Logs/Follow) e verificando que a chave privada está sendo ativada para o fechamento do túnel SSL.

    Logs no HSN
    2021/02/16 19:45:05 00003F80 00039C37 13D1B59C iispart auth init, c: 41|10.61.53.163 10.61.53.  60:4433 -
    2021/02/16 19:45:05 00003F80 00039C38 13D1B59C iispart auth ok, 10.61.53.163, 6|10.61.53.163 10.   61.53.60:4433 -
                                                   ^^^^^^^ # (1)!
    2021/02/16 19:45:05 00003F80 00039C39 13D1B59C rsa CSP0670045F!F7md3iGOTL34+gRTEo/4okX +CR719IPywZ2+yqVpegc=, c: 41|10.61.53.163 10.61.53.60:4433 iispart
                                                   ^^^ ^^^^^^^^^^^ # (2)!
    2021/02/16 19:45:05 00003F80 00039C3A 13D1B59C e-conn: 10.61.53.163|10.61.53.163 10.61.53.   60:4433 iispart
    2021/02/16 19:45:05 00003F80 00039C3B 000A3309 session thread down [5]|10.61.53.163 10.61.53.   60:4433 iispart
    
    1. Autenticação no HSM
    2. Uso da chave no HSM