Aktualizacja certyfikatów dla AD FS 2.2

Problem:

Po aktualizacji certyfikatów w roli AD FS 2.0 nie zmienia nam się certyfikat widoczny w przeglądarce, lub pojawiają się błedy: An error occurred while using SSL config for socket address 151.24.100.42:6331. The error status code is contained within the returned data.

Powód:

Aktualizacja certyfikatów SSL w usłudze AD FS 2.2 (Windows 2012 R2) nie aktualizuje certyfikatu przypisanego do usługi HTTP. AD FS 2.2 nie wymaga już roli IIS, więc wymiana certyfikatu dla usługi HTTP jest bardziej złożona.

Rozwiązanie:

    1. Musimy pobrać Hash dla certyfikatu, którego będziemy używać dla komunikacji HTTP – to może być ten certyfikat, który w konsoli AD FS nazywa się Service Communications.
      W tym celu z linii poleceń uruchamiamy komendę

      PS C:\Windows\system32> (Get-AdfsCertificate|Where-Object{$_.CertificateType -eq 'Service-Communications'}).Thumbprint

      W odpowiedzi dostaniemy ciąg znaków, np:

      E07B6F34A236966D6F00D399D6EC87DE55A84201
    2. Wyświetlamy listę certyfikatów przypisanych obecnie do usług HTTP
      netsh http show sslcert

      Polecenie zwróci nam taki wynik:

      SSL Certificate bindings:
       -------------------------
      
       Hostname:port : sts.contoso.com:443
       Certificate Hash : e08e6c34a53696bd6f00d399d6ec27de55a84207
       Application ID : {5d89a20c-beab-4389-9447-324788eb944a}
       Certificate Store Name : MY
       Verify Client Certificate Revocation : Enabled
       Verify Revocation Using Cached Client Certificate Only : Disabled
       Usage Check : Enabled
       Revocation Freshness Time : 0
       URL Retrieval Timeout : 0
       Ctl Identifier : (null)
       Ctl Store Name : (null)
       DS Mapper Usage : Disabled
       Negotiate Client Certificate : Disabled
      
       Hostname:port : localhost:443
       Certificate Hash : e08e6c34a53696bd6f00d399d6ec27de55a84207
       Application ID : {5d89a20c-beab-4389-9447-324788eb944a}
       Certificate Store Name : MY
       Verify Client Certificate Revocation : Enabled
       Verify Revocation Using Cached Client Certificate Only : Disabled
       Usage Check : Enabled
       Revocation Freshness Time : 0
       URL Retrieval Timeout : 0
       Ctl Identifier : (null)
       Ctl Store Name : (null)
       DS Mapper Usage : Disabled
       Negotiate Client Certificate : Disabled
      
       Hostname:port : sts.contoso.com:49443
       Certificate Hash : e08e6c34a53696bd6f00d399d6ec27de55a84207
       Application ID : {5d89a20c-beab-4389-9447-324788eb944a}
       Certificate Store Name : MY
       Verify Client Certificate Revocation : Enabled
       Verify Revocation Using Cached Client Certificate Only : Disabled
       Usage Check : Enabled
       Revocation Freshness Time : 0
       URL Retrieval Timeout : 0
       Ctl Identifier : (null)
       Ctl Store Name : (null)
       DS Mapper Usage : Disabled
       Negotiate Client Certificate : Disabled

      Interesujące nas pozycje to:
      Hostname:port – adres do jakiego przypisany jest certyfikat, będzie nam to później potrzebne
      Certificate Hash – hash obecnego certyfikatu (inny niż ten który zwróciło nam polecenie Get-ADFSCerficate)
      Application ID – UID aplikacji, która usługę HTTP wystawia – również potrzebny później

    3. Usuwamy złe wpisy
      :netsh http delete sslcert hostnameport:sts.contoso:443
      netsh http delete sslcert hostnameport:localhost:443
      netsh http delete sslcert hostnameport:sts.contoso:49443
      

      Oczywiście w pole hostnameport podajemy właściwe wartości

    4. Dodajemy nowy certyfikat do usług, pamiętając by podać poprawne wartości HostnamePort, CertHash oraz AppID.
      netsh http add sslcert hostnameport="sts.contoso.com:443" certhash="E07B6F34A236966D6F00D399D6EC87DE55A84201" appid="{5D89A20C-BEAB-4389-9447-324788EB944A}" certstorename=MY
      netsh http add sslcert hostnameport="localhost:443" certhash="E07B6F34A236966D6F00D399D6EC87DE55A84201" appid="{5D89A20C-BEAB-4389-9447-324788EB944A}" certstorename=MY
      netsh http add sslcert hostnameport="sts.contoso.com:49443" certhash="E07B6F34A236966D6F00D399D6EC87DE55A84201" appid="{5D89A20C-BEAB-4389-9447-324788EB944A}" certstorename=MY

i gotowe.

Post Author: chris

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.