Microsoft's official enterprise support blog for AD DS and more
Chris here again. As promised I will be covering configuring an OCSP Responder to support Enterprise CA. I will also be covering validating your OCSP Configuration.
The first step is to install the OCSP Responder Role.
To install the OCSP Responder: Open a command prompt and type: servermanagercmd.exe –install ADCS-Online-Cert.
First we will add a Revocation Configuration to the OCSP Responder.
Right click on the Revocation Configuration and select Add Revocation Configuration from the context menu.
The Add Revocation Configuration wizard opens. Click Next to continue.
Give a Friendly Name to the Revocation Configuration, and click Next. It is a good idea to include the name of the CA for which you are setting up this Revocation Configuration, especially if this OCSP Responder will handle requests for multiple CAs.
On the Select CA Certificate page, you will need to select a CA certificate. This is where you determine the CA for which you will be providing revocation information.
Select a certificate for an Existing enterprise CA, and click Next
Select Browse CA certificates published in Active Directory, and click Browse.
Select the appropriate CA, and click OK
Next you will need to select a certificate that will be used for signing OCSP responses. For a particular Revocation Configuration, the OCSP Signing certificate must be issued by the CA for which the OCSP Responder will answer revocation status requests.
Select Automatically select a signing certificate. If you wish to automatically enroll for the OCSP Response Signing Certificate, make sure the Auto-Enroll for an OCSP signing certificate is checked. Select the certificate template that you configured for use with the OCSP Responder, then click Next.
On the Revocation Provider page, you can click Provider to select revocation providers. The Windows Server 2008 OCSP Responder can only use CRLs for revocation information. If you have the CDP Extension available in the signing certificate, the Revocation Providers will be populated from the information in the CDP Extension from the OCSP Response Signing Certificate.
You can add the repository locations for your CRLs and Delta CRLs if appropriate. By default these will be populated from information included in the CDP extension of the Signing certificate. After you have reviewed the configuration or made any changes, click OK.
That completes the initial Configuration of the OCSP Responder. If you would like to modify the configuration of the OCSP Responder, you can right click on the Revocation Configuration and select Properties from the context menu.
The Local CRL tab allows you to configure a Local CRL. You can add revocation information for certificates which you wish to consider revoked. It is recommended that you do not use this option, as it adds unnecessary complexity to the revocation configuration.
The Revocation Provider tab allows you to modify the location of the CRLs and Delta CRLs that will be used for providing revocation information.
Signing Tab
In the signing tab you can:
After configuring the OCSP Responder, you will want to verify that the OCSP responder is functioning properly. The easiest way to verify that the OCSP is functioning is to use the Certutil URL Retrieval tool.
First request a certificate from the CA. Place a copy of that cert on the file system, and run the following command: certutil –URL <Certificate Name>. This will open the URL Retrieval Tool
Select OCSP, and click on the Retrieve button.
If the certificate is valid you will get the following response.
If the certificate is revoked, you will get the following response.
And if it fails, the status will be listed as Failed.
You can also use the PKIView tool to verify the configurations of the OCSP Responder.
This concludes configuring an OCSP Responder to support an Enterprise CA. If you follow the steps listed here you now have your OCSP configured to support your Windows Server 2003 or Windows Server 2008 CA. In the next part of this series, I will be configuring an OCSP Responder to support Standalone CA.
Implementing an OCSP responder: Part I Introducing OCSP Implementing an OCSP responder: Part II Preparing Certificate Authorities Implementing an OCSP responder: Part III Configuring OCSP for use with Enterprise CAs Implementing an OCSP responder: Part IV Configuring OCSP for use with Standalone CAs Implementing an OCSP Responder: Part V High AvailabilityImplementing an OCSP Responder: Part VI Configuring Custom OCSP URIs via Group Policy
- Chris Delay
The series:
Designing and Implementing a PKI: Part I Design and Planning
Designing and Implementing a PKI: Part II
Designing and Implementing a PKI: Part III Certificate Templates
Chris here again. For those Security Architects and PKI implementers, you may have known that since Windows Server 2008 we have an Online Certificate Status Protocol (OCSP) responder, and since Windows Vista we have an OCSP client that is integrated with the operating system. I wanted to cover the in and outs of the OCSP responder, and walk through the installation.
So, you may be asking the question “OCSP what?” First a little background. One of the capabilities of a PKI and in particular a Certificate Authority, aside from issuing certificates, is to publish revocation information.
For example, let’s say you issue a User certificate to a user for authentication. When the user leaves the company you will most likely want to make sure no one can use that certificate for authentication so you log onto the Certificate Authority and revoke that certificate. Each CA has a period specified when it publishes what are called Certificate Revocation Lists or CRLs for short. When the next CRL is published it will contain the serial number of the certificate, the date and time it was revoked, and the reason that the certificate was revoked. Depending on the configuration the CA it will publish the CRL to a repository such as an LDAP server or a web server. In some instances a task or job must be created to copy the CRL to a repository.
Aside from CRLs, there are also delta CRLs. Delta CRLs simply contain the revocation information for certificates that have been revoked since the last Base CRL was published. In order to determine revocation status an application would examine the last base CRL, and the latest delta CRL. The reason for publishing delta CRLs is to provide revocation information that has more current data. Also, it can reduce bandwidth since if the base CRL is already cached on the client, just the delta CRL can be downloaded. More on this later.
In order for applications to determine if a certificate has been revoked, the application examines the CRL Distribution Point (CDP) extension in the certificate. This extension will have information on locations where the CRL can be obtained. These locations are normally either HTTP or LDAP locations.
The application then can go to those locations to download the CRL. There are, however, some potential issues with this scenario. CRLs over time can get rather large depending on the number of certificates issued and revoked. If CRLs grow to a large size, and many clients have to download CRLs, this can have a negative impact on network performance. More importantly, by default Windows clients will timeout after 15 seconds while trying to download a CRL. Additionally, CRLs have information about every currently valid certificate that has been revoked, which is an excessive amount of data given the fact that an application may only need the revocation status for a few certificates. So, aside from downloading the CRL, the application or the OS has to parse the CRL and find a match for the serial number of the certificate that has been revoked.
With the above limitations, which mostly revolve around scalability, it is clear that there are some drawbacks to using CRLs. Hence, the introduction of Online Certificate Status Protocol (OCSP). OCSP reduces the overhead associated with CRLs. There are server/client components to OCSP: The OCSP responder, which is the server component, and the OCSP Client. The OCSP Responder accepts status requests from OCSP Clients. When the OCSP Responder receives the request from the client it then needs to determine the status of the certificate using the serial number presented by the client. First the OCSP Responder determines if it has any cached responses for the same request. If it does, it can then send that response to the client. If there is no cached response, the OCSP Responder then checks to see if it has the CRL issued by the CA cached locally on the OCSP. If it does, it can check the revocation status locally, and send a response to the client stating whether the certificate is valid or revoked. The response is signed by the OCSP Signing Certificate that is selected during installation. If the OCSP does not have the CRL cached locally, the OCSP Responder can retrieve the CRL from the CDP locations listed in the certificate. The OCSP Responder then can parse the CRL to determine the revocation status, and send the appropriate response to the client.
The OCSP Client is a component that generates OCSP requests based on information stored in the AIA extension of the certificate it is validating. The Windows OCSP client supports the Lightweight OCSP Profile as specified in RFC 5019.
Web Proxy Cache
Web Proxy Cache is the Web service that receives requests, sends and caches responses.
Online Responder Service
The Online Responder Service is the component that is responsible for managing the configuration of the OCSP responder, retrieving revocation information from the Revocation Providers, signing responses, and auditing changes to the configuration of the OCSP responder (if configured to do so).
The Online Responder service runs under the Network Service account. When you create the Revocation Configuration you will assign the Signing Certificate that will be used by the Online Responder Service to digitally sign the responses sent back to a requesting client. If you are utilizing the OCSP in conjunction with an Enterprise CA you can choose to enroll for the signing certificate during the Revocation Configuration setup, and you can also choose to automatically reenroll for signing certificates. This eases management because the Signing Certificates are generally set to be valid for a short period of time.
The reason for the short validity periods is that the OCSP signing certificate contains the id-pkix-ocsp-nocheck extension. This extension tells the client that the certificate is valid for its entire lifetime so the revocation status of the certificate is never checked. The reason why this extension is included is to avoid circular revocation checking. If this extension was not included, the client would contact the OCSP Responder to verify the revocation status for a certificate. The OCSP Responder would then respond with a signed request. The client would then have perform revocation checking for the certificate that signed the response, before finishing revocation checking for the original certificate. At this point if there was an OCSP location specified for the signing certificate, you would run into a loop where the OCSP client would ask for the revocation status for the signing certificate from the OCSP and get a signed response. Then the client would again have to validate the revocation status for the signing certificate. This would occur over and over again. Or alternatively, if a CDP location was specified for the signing certificate, you would then need to download the CRL, and verify the signing certificate, in effect making the OCSP pointless, since you would have to download a CRL to validate the OCSP Signing Certificate. We avoid all of this with the inclusion of the id-pkix-ocsp-nocheck extension.
So, since we are not checking revocation status for the OCSP Signing certificate you should have a short validity period for the OCSP Signing Certificate to increase security.
Regardless you will have to the give permissions to the private key of the OCSP Signing Certificate to the Network Service Account since that is the identity under which the service runs. If you are using the OCSP with a Windows Server 2008 Enterprise CA, in the Request Handling tab of a Version 3 Certificate Template there is the option to Add Read permissions to Network Service on the private key. This option is enabled by default on the OCSP Response Signing template.
If you are using a certificate issued from a Windows Server 2008 Standalone CA, a Windows Server 2003 Enterprise CA or a Windows Server 2003 Standalone CA, you will need to manually grant permissions to the private Key of the OCSP Signing Response Certificate to the Network Service account.
1. To manually give the Network Service Account access to the private key, open up the Certificates MMC targeted for the Local Computer. 2. Right click on the certificate, then select All Tasks from the context menu, and then select Manage Private Keys…
1. To manually give the Network Service Account access to the private key, open up the Certificates MMC targeted for the Local Computer.
2. Right click on the certificate, then select All Tasks from the context menu, and then select Manage Private Keys…
3. Click Add on the Permissions dialog box.
4. Type Network Service, and then click Check Names to resolve the name. Then click OK. 5. The Network Service only needs read permissions to the Private Key, so deselect the Allow privilege for Full Control, and verify the Allow privilege is granted for Read, and click OK.
4. Type Network Service, and then click Check Names to resolve the name. Then click OK.
5. The Network Service only needs read permissions to the Private Key, so deselect the Allow privilege for Full Control, and verify the Allow privilege is granted for Read, and click OK.
Revocation Configuration
A Revocation Configuration contains PKI components required to respond to an OCSP request. These include items such as the CA Certificate, OCSP Signing Certificate, and information about the Revocation Provider.
You can have multiple Revocation Configurations per OCSP Responder allowing the OCSP Responder to provide revocation information for multiple CAs.
When configuring the Revocation Configuration for the OCSP Responder you will designate the following
Revocation Provider is the component responsible for retrieving revocation information. In Windows Server 2008 the only revocation provider supported is the CRL based Revocation Provider. In other words the Windows Server 2008 OCSP Responder can only retrieve revocation information from published CRLs.
OCSP Responders can be configured for high availability by placing the OCSP responders in an Array. The Array itself does not provide fault tolerances, but maintains the configurations of multiple OCSP responders that are part of the Array. The configuration is maintained by the OCSP Responder that is designated as the “Array Controller”.
Once the responders are arranged in an Array you can use Network Load Balancing to provide a highly available configuration.
I will cover the process of creating a highly available OCSP configuration in a future blog article.
I hope you found the information in this posting helpful. I plan on continuing the series on deploying an OCSP Responder. I will be posting the following blog entries soon, stay tuned:
Hi, this is Bobby from the Microsoft Directory Services support team. Today we are going to discuss some confusing behavior that I’ve observed regarding inconsistent DFS access. While the root of this is issue is easy to remediate, it can be difficult to find the offending servers.
When first presented with this issue, I was asked to help determine the nature of users getting prompted to connect to a DFS root. DFS roots are defined in “How DFS Works as”
The starting point of the DFS namespace. The root is often used to refer to the namespace as a whole. A root maps to one or more root targets, each of which corresponds to a shared folder on a separate server. The DFS root must reside on an NTFS volume. A DFS root has one of the following formats: \\ServerName\RootName or \\DomainName\RootName.
The dialog was as follows:
Prior to calling Microsoft support, the customer was able to successfully connect to the NETLOGON and SYSVOL share of the domain without issue (\\contoso.com\sysvol and \\contoso.com\netlogon) Rebooting the client machine or having the client logoff would at times alleviate the problem. After a random period of time, users could access the DFS root, would later lose access, and users who did not work before would start working.
Investigating the issue, it was noticed that the "Distributed File System" MMC would change as time passed. For reference, I have included a picture of what it should look like when all is ok.
Using the "Distributed File System" MMC to check the status of the root would provide differing results at different times.
In this picture, it appears that three of the four root targets are inaccessible. When the MMC was checked later (or the user logged off and then back on) the results changed:
When using the “DFS Management” MMC from 2003 R2, The display is different, but the behavior is the same:
When we began troubleshooting the issue, we started to look at the output of “dir” and dfsutil /pktinfo. This was to test the access to the DFS root and connectivity to the root shares.
At this point, each target appeared accessible. This was an unexpected result. I would have expected that we would get access denied to all of the targets. If we could reach each target, why were getting random “access is denied” when attempting to get a directory listing of the root?
We used the dfsutil /pktflush command to purge the referral cache thus forcing a request for new referrals. Then we ran the dir commands again that returned different results:
Using Netmon, we took a trace to see what we can find.
The first thing we attempted was to request a DFS referral for \\contoso.com\root
We were returned four targets for the root.
This was represented in the pktinfo as follows:
At this point we attempted to create a connection to the first server returned in the referral.
However we were returned: Status_access_denied.
Normal troubleshooting would be to attempt to connect to the share \\2003-02\root. In this case, we executed dir /b \\2003-02\root.
When we attempt to do this, we received more unexpected results:
I would have actually expected this to get an “access is denied” too.
Looking further in the network trace, we noticed that we received a new referral when we attempted to connect to 2003-02 server directly. To illustrate this, I have several screenshots of the referral network traffic.
The DFS service returned the following (note that ‘TargetPath: Index:1’ is not 2003-02 but another server):
Again the pktinfo:
When connecting to the path \\2003-02\root, we were instead accessing the root share on 2003-01, as detailed in the trace:
When connecting to a root DFS share, the DFS service returns referrals for all of the participants on the root target set. So when we executed the command dir \\2003-dc1\root, the DFS service on 2003-dc1 then responded with a new DFS root referral for the path \\2003-dc1\root. This behavior accounts for the entries in the referral cache for paths to each root (i.e. \\2003-dc1\root, \\2003-01\root, \\2003-02\root, \\2003-03\root). DFS referrals are retuned in a random order for servers in the site of the client. This will cause differencing results for each time the client requests a referral.
The root cause of the issue was actually incorrect share permissions on the “root” share of 2003-02. This can be observed locally using net share sharename
Comparing this to the same output of 2003-01, we see the problem:
In small environments, connecting to the server and examining the share permissions is an acceptable method, however in large environments this can prove cumbersome. I prefer to use subinacl to verify the permissions remotely. (Subinacl can be downloaded here: http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en)
To fix this we could connect to the server and add the permissions. Or it could be altered remotely with the following:. The syntax is : subinacl /share \\2003-02\root /grant=everyone=r
Note: Read is the default share permission in 2003 and later. Your permissions may be different based upon your business needs.
Using DFSGUI.MSC to check the status of the DFS root targets has been deprecated and is no longer available in 2008. This however does not change the behavior of the referrals that are returned.
Using DFSdiag.exe from Windows 2008 does not return any additional information as to the root cause.
For more information about the technologies discussed here, please refer to “How DFS Works” http://technet.microsoft.com/en-us/library/cc782417(WS.10).aspx
Ned here again. I recently came across a peculiar SYSVOL migration behavior with DFSR, and I thought I’d fill you in so you don’t chase your tail on this someday.
The Scenario
You can migrate Windows Server 2008 SYSVOL share from using legacy FRS to DFSR. You begin the migration by replacing or upgrading your old DCs with Windows Server 2008. Next, fire up DFSRMIG.EXE, and go to town using our migration guide. It’s simple and straightforward.
You should check your progress at each stage of the migration. It may puzzle you to find this little gem in your event log after the Prepared of the migration (using dfsrmig.exe /setglobalstate 1):
Log Name: DFS Replication Source: DFSR Date: 5/20/2009 10:54:56 AM Event ID: 6804 Task Category: None Level: Warning Keywords: Classic User: N/A Computer: 7132-srv-01.consolidatedmessenger.com Description: The DFS Replication service has detected that no connections are configured for replication group Domain System Volume. No data is being replicated for this replication group. Additional Information: Replication Group ID: 07003670-2807-4D5B-89BD-FFF3DA94F2C6 Member ID: F2679227-2489-4A6D-A92C-2050E4ED4ACD
Oh snap, that doesn’t look good. So you run a DFSR Diagnostic health report and see:
Errors: "No connections exist for Domain System Volume."
Server Details: "No connections exist for Domain System Volume. Affected replicated folders: All replicated folders on this server. Description: The DFS Replication service has detected that there are no connections configured for replication group Domain System Volume. No data for this replication group is being replicated to or from this server. Event ID: 6804 Last occurred: Wednesday, May 20, 2009 at 10:54:56 AM (GMT-5:00) Suggested action: To resume replication, create connections using the DFS Management snap-in or the Dfsradmin.exe command-line tool."
Ack! You've checked replication by creating a test file in the new replicated SYSVOL_DFSR folder. To your surprise; the file replicates to all the DCs. That’s not possible though, as without connection objects there’s no way for DFSR to replicate anything. And, for extra weirdness, not all of the DCs report this issue – even DCs you know have direct replication partnerships with DCs that report the issue.
What the heck is happening?
The Cause
There are actually two things going on here:
1. A 6804 warning event is actually an expected entry under some circumstances, based on AD replication convergence. During creation of a new customer Replication Group you can see this event as well. So that’s no big deal.
2. However, a 6806 event should follow, which reads:
Log Name: DFS Replication Source: DFSR Date: 5/20/2009 10:55:56 AM Event ID: 6806 Task Category: None Level: Informational Keywords: Classic User: N/A Computer: 7132-srv-01.consolidatedmessenger.com Description: The DFS Replication service has detected that connections are configured for replication group Domain System Volume.
Unfortunately, this event does not appear when migrating SYSVOL due to an issue with the DFSR migration code.
The Solution
So the solution I give you here is an easy one that anyone can implement – just ignore it. :-) This event is harmless long as:
1. The 6804 event only occurs during a SYSVOL migration. 2. It only happens once. 3. And, it only references the Domain System Volume replication group.
1. The 6804 event only occurs during a SYSVOL migration.
2. It only happens once.
3. And, it only references the Domain System Volume replication group.
If you want the diagnostic health report event to go away, simply restart the DFSR service on any DCs reporting the event. You won’t see it again. Or don’t restart the service – it’s perfectly ok to ignore the event here too.
We’re looking into a more permanent solution for this, of course. But I figured you’d rather read it here first rather than opening a support case to be told ‘yes, we know’.
Now get back to migrating. Don’t you know how much I hate FRS?
- Ned ‘Blinders’ Pyle
I had started posting some of the interesting Directory Services-related posts from other blogs, but I figure it makes more sense to aggregate them in this weekly new KB articles posting. That way I won’t be muddying up people’s RSS feeds with reposts, since some of you subscribe to many of the blogs that I monitor. I will also include the previous week’s postings to AskDS so you can use this one post as a quick snapshot of what is going on with Directory Services.
If you have any thoughts on how we can better keep you informed about new content, drop us some feedback in the comments section.
KB Articles
971888
Microsoft Security Advisory: Update for DNS devolution
957579
Post-installation behavior on client computers after you install the DNS update
969041
The Active Directory Management Gateway Service is now available
969805
MS09-018: Description of the security update for Active Directory: June 2009
970437
MS09-018: Description of the security update for Active Directory Application Mode (ADAM): June 2009
972423
An optional update is available to update the Daylight Saving Time for Bangladesh for the year 2009 for Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008 based computers
971059
You cannot enter the FQDN of all printer servers into the "Point and Print Restrictions" policy in Windows Server 2008 or Windows Vista
959542
A warning event is logged repeatedly on a member computer that is running Windows Server 2008 or Windows Server 2003 R2 when you configure read-only replicated folders on a computer that is running Windows Server 2008 R2
971129
The Ipconfig.exe utility crashes when you run the ipconfig command together with the /displaydns switch on a computer that is running Windows Server 2008 or Windows Vista
967224
Some TCP/IP parameters in the registry are changed to incorrect values when you use the NETSH command to modify TCP/IP global parameters on a computer that is running Windows Server 2008 or Windows Vista
967113
Per-machine printer connections that are removed are still displayed in the GPO report about a print client computer that is running Windows Server 2008 or Windows Vista
971714
The report generation process may stop responding when you run Perfmon.exe with the Active Directory Diagnostics template to generate a report on a Windows Server 2008-based domain controller
968140
The kpasswd protocol fails with a KDC_ERR_S_PRINCIPAL_UNKNOWN error after you perform an authoritative restore on the krbtgt account in a Windows Server 2008 domain
Blog Posts
Ghosts in the DFS Management Machine
Using LDIFDE to Perform Post-Migration Clean-up Tasks
DNS Devolution update 97188
Registry.pol fun
ADPREP Challenges
ADMG (aka ADWS for none 2008 R2 )
Active Directory Gateway WebService is available for ‘legacy’ OSes
Windows Server 2008 R2 Documentation & Resources
Active Directory Forest Recovery Guides
Kudos to the Win7 Diagnostics Team
Making the shift from ADFS v1 to Geneva Server
Something else I learned about Bind DNs…
DN Formats in Active Directory (Queries)
Clearing a set of specific Domain SIDs from sIDHistory
Important Security Bulletin
Video on TechNet Edge: Searching for settings in a GPO
Setting the Time Zone in Windows Server 2008 R2
Random port? I think not…
Hello everyone, David Everett and Scott Goad here to discuss a recent issue that we thought you might find interesting. We were working with a customer that was trying to implement password complexity, but they were not seeing the behavior that we would normally expect.
The issue came about when trying to apply password complexity requirements, and having existing users change their password. This should force the complexity at password change, but in this customer’s case, complexity was not being enforced. Looking into the issue further, we tested with a new user account we created in DSA.MSC and noticed that password complexity worked as expected.
Lab time! We tested the password complexity requirements and started to look at one of the problem users. We were able to compare an LDIFDE dump, of the problem user with one taken from our lab that was not having the issue. At first glance, nothing looked awry, but digging deeper, we soon realized that the displayName attribute was not populated in the LDIFDE dump.
We investigated as to how the user accounts were provisioned, to better understand why this attribute was missing. The user accounts were created using SUN Identity Manager and then sync’d to Active Directory.
Why does this matter? Password complexity evaluates the sAMAccountName and displayName attributes and builds “tokens” that are used to check the password that is being presented against complexity requirements. These two attributes, in combination or separately, are used to build the tokens which are compared against the password that the user enters. In this case, having an empty displayName attribute caused password complexity to be relaxed. The policy was in place and working as expected, since it was still evaluating the sAMAccountName. Here is a sample of what you can see in the LDIFDE dump:
dn: CN=Test User 1,OU=staff,DC=top,DC=contoso,DC=com changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: Test User 1 sn: User givenName: Test distinguishedName: CN=Test User 1,OU=staff,DC=top,DC=contoso,DC=com instanceType: 4 whenCreated: 20060817140027.0Z whenChanged: 20090518142050.0Z uSNCreated: 693960 uSNChanged: 12104216 name: Test User 1 objectGUID:: a2dz2ugl0xGQeQCAXzH4Jg== userAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 0 homeDrive: U: badPasswordTime: 128856853740701244 lastLogoff: 0 lastLogon: 128856853892263744 pwdLastSet: 128871300501924190 primaryGroupID: 513 accountExpires: 9223372036854775807 logonCount: 1 sAMAccountName: t_tUser sAMAccountType: 805306368 userPrincipalName: t_tUser@top.contoso.com lockoutTime: 0 objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=top,DC=contoso,DC=com
Based on this LDIFDE dump the only “token” that was being monitored for complexity was t_tUser in the sAMAccountName attribute. The admin was able to pass Test and User in the password. When password complexity is enforced, displayName and sAMAccountName attributes are checked. The new password is checked for “tokens”. It is important to note that a “token” must be three or more characters in length. Even then, only the whole “token” is used in the complexity check, not portions of the tokens. This comes into play when trying to evaluate tokens against displayName.
At this point, password complexity is being enforced as designed, but not what we would expect to see based on the user’s account information. The action plan that was provided to the customer was to populate the displayName attribute and test. This worked in testing, but ultimately the customer had to work with their vendor to resolve the issue with the sync process, allowing the displayName attribute to be populated from the SUN Identity Manager to Active Directory.
For more info on Password Complexity rules, see the recent blog post Understanding Password Policies.
- David Everett and Scott Goad, the Wonder Twins
Chris here again. In part I of this series we covered the basics of how OCSP works. We also covered the underlying reasons for deploying an OCSP Responder. In Part II we covered configuring the Certificate Authorities for whom which the OCSP Responder will check revocation status for on behalf of the clients. In Part III we covered configuring and OCSP Responder to support an Enterprise CAs. You may use Standalone CAs in your environment. In this blog post, I will be covering deploying a Revocation Configuration to support a Standalone CA.
Enterprise CAs are very tightly integrated with Active Directory. As such the certificates for the Root CA and for intermediate CAs are published to Active Directory. These certificates are automatically placed in the appropriate certificate stores on the clients. If you publish the Root CA certificate that the issuing CA chains up to; in Active Directory the clients will have that Root CA certificate published to the Trusted Root Certification Authorities container in the user and machine store. If you have not, or do not plan to deploy the Root CA certificate through Active Directory and Group Policy you will need to manually publish the Root Certificates in the Trusted Root Certification Authority store.
To install the OCSP Responder: Open a command prompt and type: servermanagercmd.exe –install ADCS-Online-Cert
The next step is to request the OCSP Response Signing Certificate from the Standalone CA. Since a Standalone CA does not have certificate templates we must manually request the attributes we would like in the certificate. To do this we use a utility called certreq.exe. More information for Certreq is available here: http://technet.microsoft.com/en-us/library/cc736326.aspx.
To use certreq we must first generate a configuration file. FIgure 1 shows a sample configuration file. The key items that must be included is the OCSP Signing OID, and the OCSP No Revocation Check Extension, otherwise known as the id-pkix-ocsp-nocheck extension.
Let us take a look at this configuration file.
· First we have [NewRequest] which is a required section indicating that this is for a new certificate request.
· Then we have the subject in X.500 format. You can also use the ldap format which is derived from X.500. For example: CN=FCOCSP01,DC=Fourthcoffe,DC=Com. Alternatively, you could use just the common name, such as CN=FCOCSP01.
· PrivateKeyArchive=False since we will not be archiving the private key.
· Exportable=True which gives us the option to export the private key if so desired.
· UserProtected=False which disables strong key protection.
· MachineKeySet =True which is used to indicte that the resulting certificate will be stored in the machine store.
· ProviderName=”Microsoft Enhanced Cryptographic Provider v1.0” specifies the Cryptographic Service Provider (CSP) that will be used.
· UseExistingKey Set=False indicates that this request is for a new certificate, with a new key pair.
· RequestType=CMC tells certreq to generate the request in CMC format.
· Then we specify the new section [EnhancedKeyUsageExtension] which indicates what extensions should be placed in the EKU Extension in the certificate. Under that extension we specify that this certificate can be used for OCSP Signing by specifying the OCSP Signing OID (OID=”1.3.6.1.5.5.7.3.9).
· We then start a new section called [Extensions] and specify that the id-pkix-ocsp-nocheck extension should be included in the certificate.
Below are the steps for generating the request and installing the signing certificate:
1. First we use certreq to generate the request file. We specify the configuration file and the output request file. The key pair for this certificate is generated at the same time the request file is created by Certreq.
2. Next, we must submit the request to the CA. Copy the request file over to the Standalone CA. From the Certification Authority MMC, right click on the CA Name, and select All Tasks from the context menu, and then Submit New Request.
3. Browse to the request file, and select Open. 4. The request will then show up in Pending Requests. Right click on the request, and select All Tasks from the context menu, then select Issue.
3. Browse to the request file, and select Open.
4. The request will then show up in Pending Requests. Right click on the request, and select All Tasks from the context menu, then select Issue.
5. You will now find the requested Certificate under Issued Certificates. Double click on the certificate to view its properties.
6. Verify the certificate. Key things to look for here are the presence of the OCSP No Revocation Checking Extension. And that OCSP Signing is specified in the Enhanced Key Usage (EKU) Extension.
Exporting the Certificate from the CA
1. First select Copy to File from the Details Tab of the Certificate Properties. This will open the Certificate Export Wizard. 2. Click Next at the Welcome Screen. 3. Select DER encoded binary x.509 (.CER), and click Next. 4. Browse to the location where you which to save the resulting certificate, and give the certificate a name, and click on Save. 5. Click Finish at the Completing the Certificate Export Wizard screen. 6. You will be prompted that The export was successful. Click OK.
1. First select Copy to File from the Details Tab of the Certificate Properties. This will open the Certificate Export Wizard.
2. Click Next at the Welcome Screen.
3. Select DER encoded binary x.509 (.CER), and click Next.
4. Browse to the location where you which to save the resulting certificate, and give the certificate a name, and click on Save.
5. Click Finish at the Completing the Certificate Export Wizard screen.
6. You will be prompted that The export was successful. Click OK.
Installing the OCSP Response Signing Certificate
Copy the resulting certificate to the OCSP Server. Open up a command prompt. Navigate to the location where you saved the certificate file, and run certreq –accept <Certificate Name>, to complete the installation of the certificate.
Configuring Private Key Permissions
The Online Responder Service runs under the Network Service account. By default the Network Service account does not have access to private keys of certificates located in the Local Computer Personal store. To give the Network Service access, perform the following steps:
1. Open up the Certificates MMC targeted for the Local Computer. 2. Right click on the certificate, then select “All Tasks” from the context menu, and then select Manage Private Keys….
1. Open up the Certificates MMC targeted for the Local Computer.
2. Right click on the certificate, then select “All Tasks” from the context menu, and then select Manage Private Keys….
4. Type Network Service,and then click Check Names to resolve the name. Then click OK.
Now that we have installed the OCSP Response Signing certificate, and configured Private Key permissions, we must now configure the Revocation Configuration for the CA, on the OCSP Responder. Open the OCSP Management Console. Follow the following steps to configure the Revocation Configuration:
1. Right click on Revocation Configuration, and select Add Revocation Configuration from the context menu.
2. This will start the Add Revocation Configuration wizard. Click Next, when presented with the Getting started with adding a revocation configuration screen.
3. On the Name the Revocation Configuration screen, give a name to the configuration, and click Next. Note: It is a good idea to name the configuration for the CA server, in case this Responder will be used for multiple CAs.
4. On the Select CA Certificate Location screen, Select a certificate from the Local certificate store, and click Next.
5. On the Choose CA Certificate screen, click Browse.
6. Select the CA certificate, for the CA you are configuring on the OCSP Responder, and click OK.
7. You will then be returned to the Choose CA Certificate screen. The CA that you selected will be displayed. Click Next to continue.
8. You will now need to select a signing certificate, on the Select Signing Certificate screen. Select Manually select a signing certificate, and click Next.
9. You will then be returned to the Revocation Provider screen, click Finish to complete the wizard.
After completing the Wizard, you will notice under the “Revocation Configuration Status” portion of the “Online Responder Configuration” page that the OCSP Configuration that you just added has an error indicating “Bad Signing certificate on Array controller. No need to panic at this point. This error is generated because we have not assigned the OCSP Response Signing certificate yet.
Now let us go ahead and assign the Signing certificate.
1. In the OCSP MMC, expand Array Configuration, and click on the name of the OCSP Server. Then in the center pane of the console, select the appropriate Revocation Configuration, then right click on that revocation configuration, and elect Assign Signing Certificate from the context menu.
2. You will then be prompted select the Signing certificate. Select the appropriate Signing certificate, and click OK.
At this point you will now see some warnings. If you look under the Revocation Configuration Status for the Revocation Configuration you are configuring, you will notice this error:
Also, on the Online Responder Configuration page you will notice this error:
This is due to the fact that the Revocation Provider has not yet been verified. To verify the Revocation Provider, right click on Array Configuration, and select Refresh Revocation Data.
Once the Revocation Provider has been verified, you should see this under Revocation Configuration Status for the Revocation Configuration you are configuring.
And that OCSP Signing is specified in the Enhanced Key Usage (EKU) Extension.
To verify your ocsp configuration please follow the Verify OCSP Configuration section in Part III of this series.
This concludes Part IV of this Series. I hope you enjoyed the first four parts of the series and find them useful. I plan to cover other PKI topics in the near future.
Chris here again. In Part I we covered some of the basics and background information on the reason for the OCSP Responder and a basic understanding of how the OCSP Responder functions. So now we look towards implementing the OCSP Responder. However, before we move forward with the Install of the OCSP Responder we must first configure the CA to support OCSP for revocation status checking.
As discussed in the first part of this series, the OCSP Responder provides revocation information to clients or application requesting revocation status for a specific certificate. In order for this to be accomplished there are certain prerequisites that need to be in place.
Some of the prerequisites are different depending on which version of the CA you are using, and whether you are using a Standalone or Enterprise CA.
To advertise that revocation status information for a particular CA can be obtained via OCSP, the CA must include a pointer to the OCSP Responder in the certificate. This is done by adding an OCSP URI to the AIA extension of the certificate.
Although this is mentioned as a prerequisite, you may want to do this after the OCSP Responder is configured. The reason being is that if you issue certificates before the Responder is available you will create unnecessary traffic to the soon to be OCSP location.
1. Open the Certification Authority Snap-in on the CA, as an Enterprise Administrator. 2. Right click on the CA name, and select Properties
1. Open the Certification Authority Snap-in on the CA, as an Enterprise Administrator.
2. Right click on the CA name, and select Properties
3. Click on the Extension Tab. From the Select Extension drop down Box, select Authority Information Access (AIA). 4. Then click on the Add… button to add the OCSP location 5. Type the location for the OCSP responder. This will typically be: http://<fqdn of the ocsp responder>/ocsp 6. Then click OK.
3. Click on the Extension Tab. From the Select Extension drop down Box, select Authority Information Access (AIA).
4. Then click on the Add… button to add the OCSP location
5. Type the location for the OCSP responder. This will typically be:
http://<fqdn of the ocsp responder>/ocsp
6. Then click OK.
7. Check the Checkbox for Include in the online certificate status protocol (OCSP) extension.
8. And click OK, to close the CA Properties.
OCSP Signing Certificates
In order to be able to deploy the OCSP Signing Certificate used by the OCSP Responder, there are some configuration changes that need to be made on a Windows Server 2003 CA.
A signing certificate includes the id-pkix-ocsp-nocheck extension. This extension informs the OCSP client that the OCSP signing certificate should not be checked for revocation during the lifetime of the certificate. The OCSP Signing certificate should therefore have a short lifetime. By default, a Windows Server 2003 CA will ignore the id-pkix-ocsp-nocheck extension in a certificate request and will not include that extension in the issued certificate. To change this behavior, you must allow custom extensions to be used in certificate requests.
To enable support for custom extensions, run the following command on the CA:
The extension object ID (OID) for the id-pkix-ocsp-nocheck extension is1.3.6.1.5.5.7.48.1.5. The above command instructs the CA to include that extension in the issued certificate if it is found in the request.
If you plan on using a Windows Server 2003 Enterprise CA to issue the OCSP Signing Certificate you will need to follow the instructions outlined in the previous section for enabling the use of custom extensions.
If you plan on using a certificate template on the Windows Server 2003 Enterprise CA, you must have at least 1 Windows Server 2008 Enterprise CA in the environment. The reason is you will be duplicating the Version 3 OCSP Signing Template on the Windows Server 2008 CA for use with the Windows Server 2003 CA. Both the Windows Server 2003 and Windows Server 2008 CA, must be running Enterprise Edition. This is due to the fact that only Version 1 templates are supported in the Standard Editions of the Server OS.
Duplicating the OCSP Signing Template
1. Logon to a Windows Server 2008 Enterprise CA, with an account that is a member of the Enterprise Admins group. 2. Open up the Certificate Template management console (certtmpl.msc). 3. Right click on OCSP Response Signing Template, and select Duplicate Template from the context menu, as illustrated below:
1. Logon to a Windows Server 2008 Enterprise CA, with an account that is a member of the Enterprise Admins group.
2. Open up the Certificate Template management console (certtmpl.msc).
3. Right click on OCSP Response Signing Template, and select Duplicate Template from the context menu, as illustrated below:
4. From the Duplicate Template dialog box, select Windows Server 2003 Server, Enterprise Edition, and click OK. Selecting Windows Server 2003 Server, Enterprise Edition, creates a Version 2 Template instead of a Version 3 Template.
5. Give a Name to the Duplicated Template, and click OK.
6. Log on to the Windows Server 2003 CA, and open the Certificate Authority Snapin (Certsrv.msc), and right click on Certificate Templates, and select New, then Certificate Template to Issue from the context menu.
7. Select the Duplicated Template, and click on OK.
In the previous section on preparing the Windows Server 2003 Standalone CA, we had to enable the CA to accept custom extensions sent in the request. This was to allow us to request a certificate with the id-pkix-ocsp-nocheck extension. Windows Server 2008 natively supports the id-pkix-ocsp-nocheck extension, so there is no need to allow custom extensions. On the Windows Server 2008 Enterprise CA there is no action necessary to support the id-pkix-ocsp-nocheck extension. However, on the Windows Server 2008 Standalone CA, we need to run the following command to add support for the id-pkix-ocsp-nocheck extension:
Preparing Windows Server 2008 Enterprise CA for use with OCSP Responder
The only preparation required for the Windows Server 2008 Enterprise CA, is to give permissions to the templates to the OCSP Servers, and to make the template available for issuance.
1. Open the Certificate Template Management console (certtmpl.msc) 2. Locate the OCSP Certificate Template, Right-click, and select Properties 3. On the Security Tab, add the hostname of the soon to be OCSP Server, and give the server Read and Enroll permissions to the template. Note: A more scalable solution, as seen in the illustration below, is to create a security group, assign permissions to the security group, and add any OCSP servers to the Security Group.
1. Open the Certificate Template Management console (certtmpl.msc)
2. Locate the OCSP Certificate Template, Right-click, and select Properties
3. On the Security Tab, add the hostname of the soon to be OCSP Server, and give the server Read and Enroll permissions to the template. Note: A more scalable solution, as seen in the illustration below, is to create a security group, assign permissions to the security group, and add any OCSP servers to the Security Group.
4. Go back to the Certification Authority management console, Right-click on the Certificates Templates node, and from the context menu, select New and then "Certificate Template to issue.
5. Select the OCSP Response Signing Template, and select OK.
You should now have your Certificate Authorities configured to support the OCSP Responder as a source of revocation status. In the next part of this series I will cover installing and the configuring the OCSP Responder to support Enterprise CAs.