P
Peter Schlephendorfer
Setup:
Root Domain Controller
'
'-- Subordinate Enterprise CA (issuing Domain Controller certs)
'
'-- Child Domain Controller (CDC)
'
'-- Windows 2000 Professional workstation
Certs on the smart card are non-Microsoft certs from an external third
party CA.
Issue:
When the server OS is Windows 2000 Server, everything works. When the
server OS is Windows 2003 Server, smart card logon does not work.
We can get smart card logon to work by manually loading the CRLs into
the CDC. However, if the CRLs are subsequently deleted or expire, the
CDC does not obtain new CRLs and the smart card logon fails.
The Event Log on the CDC shows: The client certificate for the user
<domain>\<user> is not valid, and resulted in a failed smartcard
logon. Please contact the user for more information about the
certificate they're attempting to use for smartcard logon. The chain
status was : The revocation function was unable to check revocation
because the revocation server was offline.
CertUtil -urlfetch -verify <filename> (my memory may have the
parameters wrong, but hey, that's why we have certutil /?, right?)
yields mixed results. Sometimes it will chain, other times it will
not -- although it appears as though once it chains and validates, it
will continue to chain and validate for certs issued from the same
external third party CA.
NETMON running on the CDC reveals that the CDC is making LDAP calls to
the correct place to obtain the CRLs (which, incidentally, are upwards
of 4 megs). The log shows an LDAP Bind Request from the CDC to the
CDP, followed by an LDAP Bind Response from the CDP, followed by an
LDAP Search Request from the CDC. Five seconds later, the same series
of events repeats itself (Bind Request/Bind Response/Search Request).
It appears that the CDC makes three attempts, each 5 seconds apart,
then, after another 5 seconds, sends an LDAP Abandon Request to the
CDP server. There is never a Search Response from the CDP (or at
least, there isn't one within 5 or so seconds from each Search
Request).
Since we are able to manually obtain and load the CRLs from the CDC,
connectivity is obviously not the issue. It appears as though the CDC
is a bit impatient by default (at least for this scenario).
I've scoured Google and Microsoft.com for any indication as to where a
registry setting for LDAP timeout might be hidden (I even searched on
LDAP in RegEdit -- found lots of interesting things, but no difinitive
timeout setting) to no avail.
Any ideas? Again, the only difference between it working and not
working is Windows 2000 Server vs. Windows 2003 Server on the Domain
Controllers and internal subordinate enterprise CA.
Peter Schlephendorfer
Root Domain Controller
'
'-- Subordinate Enterprise CA (issuing Domain Controller certs)
'
'-- Child Domain Controller (CDC)
'
'-- Windows 2000 Professional workstation
Certs on the smart card are non-Microsoft certs from an external third
party CA.
Issue:
When the server OS is Windows 2000 Server, everything works. When the
server OS is Windows 2003 Server, smart card logon does not work.
We can get smart card logon to work by manually loading the CRLs into
the CDC. However, if the CRLs are subsequently deleted or expire, the
CDC does not obtain new CRLs and the smart card logon fails.
The Event Log on the CDC shows: The client certificate for the user
<domain>\<user> is not valid, and resulted in a failed smartcard
logon. Please contact the user for more information about the
certificate they're attempting to use for smartcard logon. The chain
status was : The revocation function was unable to check revocation
because the revocation server was offline.
CertUtil -urlfetch -verify <filename> (my memory may have the
parameters wrong, but hey, that's why we have certutil /?, right?)
yields mixed results. Sometimes it will chain, other times it will
not -- although it appears as though once it chains and validates, it
will continue to chain and validate for certs issued from the same
external third party CA.
NETMON running on the CDC reveals that the CDC is making LDAP calls to
the correct place to obtain the CRLs (which, incidentally, are upwards
of 4 megs). The log shows an LDAP Bind Request from the CDC to the
CDP, followed by an LDAP Bind Response from the CDP, followed by an
LDAP Search Request from the CDC. Five seconds later, the same series
of events repeats itself (Bind Request/Bind Response/Search Request).
It appears that the CDC makes three attempts, each 5 seconds apart,
then, after another 5 seconds, sends an LDAP Abandon Request to the
CDP server. There is never a Search Response from the CDP (or at
least, there isn't one within 5 or so seconds from each Search
Request).
Since we are able to manually obtain and load the CRLs from the CDC,
connectivity is obviously not the issue. It appears as though the CDC
is a bit impatient by default (at least for this scenario).
I've scoured Google and Microsoft.com for any indication as to where a
registry setting for LDAP timeout might be hidden (I even searched on
LDAP in RegEdit -- found lots of interesting things, but no difinitive
timeout setting) to no avail.
Any ideas? Again, the only difference between it working and not
working is Windows 2000 Server vs. Windows 2003 Server on the Domain
Controllers and internal subordinate enterprise CA.
Peter Schlephendorfer