Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Piezīme. Šajā lapā informācija attiecas uz AD FS 2012 R2 un jaunākām versijām.

Izvietošanas tīmekļa lietojumprogrammas starpniekserveris (WAP), ja jānosaka starpniekservera uzticamības relācija starp WAP servera un AD FS serveri. Pārbaudiet starpniekservera uzticamības relācija tiek izveidots vai startēšanas laikā neizdodas brīdī.

Pamatinformācija

Starpniekservera uzticamības relācija ir klienta sertifikāts. Palaižot Web lietojumprogrammas starpniekserveris pēc instalēšanas vedni, vednis izveido pašparakstīts klienta sertifikātu, izmantojot akreditācijas datus, kuru norādījāt vednī. Pēc tam vednis sertifikātu ievieto AD FS konfigurācijas datu bāzes un pievieno AdfsTrustedDevices sertifikātu krātuvē AD FS serverī.

Visas SSL saziņas http. sys izmanto SSL sertifikāts saistījumus prioritātes secībā atbilstoši sertifikātu:

Prioritāte

vārds

Parametri

Apraksts

1.

IP

IP:port

Precīzu IP un ports atbilstība

2.

SNI

Hostname:port

Precīzu resursdatora spēles (savienojuma jānorāda SNI)

3.

CCS

Ports

Izsaukt centrālā sertifikātu krātuvē

4.

Aizstājējzīmju IPv6

Ports

IPv6 aizstājējzīmju atbilstības (savienojumam jābūt IPv6)

5.

Aizstājējzīmju IP

Ports

Aizstājējzīmju atbilstības IP (savienojums var būt IPv4 vai IPv6)

AD FS 2012 R2 un vēlāk neatkarīgi no interneta informācijas pakalpojumi (IIS) un darbojas kā pakalpojums uz http. sys. AD FS izmanto hostname:port SSL sertifikāts saites. Klienta sertifikāta autentifikācija laikā AD FS nosūta sertifikātu uzticamības saraksts (CTL), pamatojoties uz sertifikātu krātuvē AdfsTrustedDevices. SSL sertifikāts saistīšana AD FS Server izmanto IP:port vai CTL veikals nav AdfsTrustedDevices, starpniekservera uzticamības relācija nav reģistrēts.

Iegūstiet AD FS saistījumus SSL sertifikāts

AD FS serverī Windows PowerShell, izpildiet šādu komandu:
netsh http show sslcert

Saistījumu atgriezts sarakstā meklējiet ar 5d89a20c beab-4389-9447 324788eb944a lietojumprogrammas ID. Šeit ir piemērs veseli saistīšana. Ņemiet vērā navigatorā daļas.

Hostname:port : adfs.contoso.com:443
Certificate Hash : 3638de9b03a488341dfe32fc3ae5c480ee687793
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 : AdfsTrustedDevices
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled

Problēmu novēršana

Automātiski noteikt starpniekservera uzticamības relācija problēmas, palaidiet šo skriptu. Pamatojoties uz noteiktas problēmas, rīkoties atbilstoši lappuses beigās.

param

(

  [switch]$syncproxytrustcerts

)

function checkhttpsyscertbindings()

{

Write-Host; Write-Host("1 – Checking http.sys certificate bindings for potential issues")

$httpsslcertoutput = netsh http show sslcert

$adfsservicefqdn = (Get-AdfsProperties).HostName

$i = 1

$certbindingissuedetected = $false

While($i -lt $httpsslcertoutput.count)

{

        $ipport = $false

        $hostnameport = $false

        if ( ( $httpsslcertoutput[$i] -match "IP:port" ) ) { $ipport = $true }

        elseif ( ( $httpsslcertoutput[$i] -match "Hostname:port" ) ) { $hostnameport = $true }

        # Check for IP specific certificate bindings

        if ( ( $ipport -eq $true ) )

        {

            $httpsslcertoutput[$i]

            $ipbindingparsed = $httpsslcertoutput[$i].split(":")

            if ( ( $ipbindingparsed[2].trim() -ne "0.0.0.0" ) -and ( $ipbindingparsed[3].trim() -eq "443") )

            {

                $warning = "There is an IP specific binding on IP " + $ipbindingparsed[2].trim() + " which may conflict with the AD FS port 443 cert binding." | Write-Warning

                $certbindingissuedetected = $true

            }

            $i = $i + 14

            continue

        }

        # check that CTL Store is set for ADFS service binding

        elseif ( $hostnameport -eq $true )

        {

            $httpsslcertoutput[$i]

            $ipbindingparsed = $httpsslcertoutput[$i].split(":")

            If ( ( $ipbindingparsed[2].trim() -eq $adfsservicefqdn ) -and ( $ipbindingparsed[3].trim() -eq "443") -and ( $httpsslcertoutput[$i+10].split(":")[1].trim() -ne "AdfsTrustedDevices" ) )

            {

                Write-Warning "ADFS Service binding does not have CTL Store Name set to AdfsTrustedDevices"

                $certbindingissuedetected = $true

            }

        $i = $i + 14

        continue

        }

    $i++

}

If ( $certbindingissuedetected -eq $false ) { Write-Host "Check Passed: No certificate binding issues detected" }

}

function checkadfstrusteddevicesstore()

{

# check for CA issued (non-self signed) certs in the AdfsTrustedDevices cert store

Write-Host; Write-Host "2 – Checking AdfsTrustedDevices cert store for non-self signed certificates"

$certlist = Get-Childitem cert:\LocalMachine\AdfsTrustedDevices -recurse | Where-Object {$_.Issuer -ne $_.Subject}

If ( $certlist.count -gt 0 )

{

    Write-Warning "The following non-self signed certificates are present in the AdfsTrustedDevices store and should be removed"

    $certlist | Format-List Subject

}

Else { Write-Host "Check Passed: No non-self signed certs present in AdfsTrustedDevices cert store" }

}

function checkproxytrustcerts

{

    Param ([bool]$repair=$false)

    Write-Host; Write-Host("3 – Checking AdfsTrustedDevices cert store is in sync with ADFS Proxy Trust config")

    $doc = new-object Xml

    $doc.Load("$env:windir\ADFS\Microsoft.IdentityServer.Servicehost.exe.config")

    $connString = $doc.configuration.'microsoft.identityServer.service'.policystore.connectionString

    $command = "Select ServiceSettingsData from [IdentityServerPolicy].[ServiceSettings]"

    $cli = new-object System.Data.SqlClient.SqlConnection

    $cli.ConnectionString = $connString

    $cmd = new-object System.Data.SqlClient.SqlCommand

    $cmd.CommandText = $command

    $cmd.Connection = $cli

    $cli.Open()

    $configString = $cmd.ExecuteScalar()

    $configXml = new-object XML

    $configXml.LoadXml($configString)

    $rawCerts = $configXml.ServiceSettingsData.SecurityTokenService.ProxyTrustConfiguration._subjectNameIndex.KeyValueOfstringArrayOfX509Certificate29zVOn6VQ.Value.X509Certificate2

    #$ctl = dir cert:\LocalMachine\ADFSTrustedDevices

    $store = new-object System.Security.Cryptography.X509Certificates.X509Store("ADFSTrustedDevices","LocalMachine")

    $store.open("MaxAllowed")

    $atLeastOneMismatch = $false

    $badCerts = @()

    foreach($rawCert in $rawCerts)

    {   

        $rawCertBytes = [System.Convert]::FromBase64String($rawCert.RawData.'#text')

        $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2(,$rawCertBytes)

        $now = Get-Date

        if ( ($cert.NotBefore -lt $now) -and ($cert.NotAfter -gt $now))

        {

            $certThumbprint = $cert.Thumbprint

         $certSubject = $cert.Subject

         $ctlMatch = dir cert:\localmachine\ADFSTrustedDevices\$certThumbprint -ErrorAction SilentlyContinue

         if ($ctlMatch -eq $null)

         {

       $atLeastOneMismatch = $true

          Write-Warning "This cert is NOT in the CTL: $certThumbprint – $certSubject"

       if ($repair -eq $true)

       {

        write-Warning "Attempting to repair"

        $store.Add($cert)

        Write-Warning "Repair successful"

       }

                else

                {

                    Write-Warning ("Please install KB.2964735 or re-run script with -syncproxytrustcerts switch to add missing Proxy Trust certs to AdfsTrustedDevices cert store")

                }

         }

        }

    }

    $store.Close()

    if ($atLeastOneMismatch -eq $false)

    {

     Write-Host("Check Passed: No mismatched certs found. CTL is in sync with DB content")

    }

}

checkhttpsyscertbindings

checkadfstrusteddevicesstore

checkproxytrustcerts($syncproxytrustcerts)

Write-Host; Write-Host("All checks completed.")

Kas ir noteicis problēmu?

Nepieciešama papildu palīdzība?

Paplašiniet savas prasmes

Iepazīties ar apmācību >

Esiet pirmais, kas saņem jaunās iespējas

PIEVIENOTIES MICROSOFT 365 INSIDERS >

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?

Paldies par jūsu atsauksmēm!

×