We will need to do some detailed checks. We will now check if the trust between WAP and AD FS is working as expected.
The proxy trust relationship between a Web Application Proxy server and the AD FS 2012 R2 server is client certificate based. When the Web Application Proxy post-install wizard is run, a self-signed Client Certificate is generated and inserted into the AD FS configuration store using the credentials specified in the wizard. AD FS also propagates this to the AdfsTrustedDevices certificate store on the AD FS server.
During any SSL communication, HTTP.sys uses the following priority order for its SSL bindings
- IP, Port binding (Exact IP and port match)
- SNI (Exact hostname match)
- CCS (Invoke Central Certificate Store)
- IPV6 Wildcard (IPv6 wildcard match connection must be IPv6
- IP Wildcard IP wildcard match (connection can be IPv4 or IPv6)
Is there a specific IPAddress:Port mapping?
As mentioned above, the IP:Port mapping is of the highest precedence. Therefore, if there exists an IP:Port binding, then that is the certificate that will be used by HTTP.sys all the time for SSL communication.
Remove the specific IP:port binding
Be sure to check that the binding does not come back. If there is an application configured with such a binding, it may re-create this automatically or on next service start-up.
Use an additional IP address for AD FS traffic
If the IP:Port binding is expected and required, then using a 2nd IP such as 1.2.3.5 for ADFS and resolving the ADFS service FQDN to this IP address would mean that the Hostname:port bindings would then be used.
Configure the AdfsTrustedDevices store as the Ctl Store for the specific IP:port binding
This will again have some dependence on why the specific IP:port binding is there and if this relies on the default CTL Store for client certificate authentication. But an option would be to set the Ctl Store on the IP:port binding to be the AdfsTrustedDevices store.
How to check current SSL certificate bindings
- Log into AD FS server
- Open PowerShell
-
Run netsh http show sslcert
C:\Users\administrator.CONTOSO>
netsh http show sslcert
SSL Certificate bindings:
————————-
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
Is CTL store name AdfsTrustedDevices?
If the user has Azure AD Connect installed, use AAD Connect to update the SSL certificate bindings on all servers. If there is no AAD Connect server in the environment, use the following PowerShell cmdlet to regenerate the ADFS Certificate bindings on the AD FS server:
Set-AdfsSslCertificate -Thumbprint <thumbprint>
Is CA issued certificate in ADFSTrustedDevices store?
The AdfsTrustedDevices store should only contain the MS-Organization-Access certificate which is the self-signed cert used for issuing Workplace Join certificates, and the Proxy Trust certificates for each of the Web Application Proxy servers. Having a CA Issued certificate in a store where only Self-Signed certs would normally exist affects the CTL generated from this store and the CTL will then only contain the CA Issued certificate.
Delete the non-self signed SSL server certificate from the AdfsTrustedDevices store
Is there a time skew between AD FS and WAP servers?
Ensure that there is no time skew between the AD FS and WAP Servers
SSL Termination between AD FS and WAP?
If SSL termination is happening on a network device between AD FS servers and WAP, then the communication between AD FS and WAP will break because the WAP and AD FS communication is based on client certificates.
Disable SSL termination on the network device in between the AD FS and WAP servers
Manually sync proxy trust certificates from config to ADFSTrustedDevices
Use the script at the end of the section to manually sync the WAP certificates from AD FS configuration to ADFSTrustedDevices store. Execute the following