Adam Meltzer's Configuration Manager Blog

  • Official documentation on using ConfigMgr and ISA has been published

    It's been a long road getting there, but there is now documentation on TechNet for how to configure ISA for use with Internet Based Client Management in Configuration Manager.

    Link here: http://technet.microsoft.com/en-us/library/cc707697(TechNet.10).aspx

     

  • Firewalls and Internet Based Client Management: Part 2: ISA Bridging with ConfigMgr 2007 (Take Two)

    IMPORTANT: This post is being kept for archival purposes, but please reference http://technet.microsoft.com/en-us/library/cc707697(TechNet.10).aspx for official documentation on how to get this configured.

     

    After my original post on configuring ISA bridging with ConfigMgr 2007, I've had several conversations with both the ISA team and customers and have been able to work out a different way to configure bridging with ConfigMgr 2007. This is still a complicated solution with some overhead, but I think that folks will find this much more palatable than the original solution.

    Pre-Requisites 

     

    Here's what you'll need in advance to any further ISA configuration:

    1. A Microsoft Enterprise CA. I have not been able to get this to work with a Standalone CA and don't know if this is possible. I'd love to be proven wrong, though.
    2. A web server certificate on the ISA server. If you're using a single Internet MP, the subject name or subject alternate name(s) in this certificate has to match what you're using in the ConfigMgr console for the external FQDN. For the purposes of this post, I performed this configuration with a single MP/DP combination. If you're using multiple MPs and DPs for IBCM, you'll have to have multiple subject alternate names in the certificate adding additional complexity to the rules. ISA 2006 supports multiple subject alternate names (with caveats), ISA 2004 doesn't support this at all.
    3. A client certificate on the ISA server, this certificate needs to be in the Personal store for the Microsoft Firewall service account (fwsrv). This certificate is used by ISA to authenticate itself with the management point when bridging the SSL connections
    4. Your ISA server needs to be domain joined because it needs a means to authenticate ConfigMgr client certificates. It can be joined to a private domain in the DMZ, it does not have to be a corporate domain.

    CA Configuration Specifics

    I cloned the Authenticated Session template and created a new one. For the purposes of this example, I called it "IBCM Client Authentication". In the Request Handling tab for the template, I have "Allow private key to be exported" checked, and "Enroll subject without requiring any user input checked." I don't know if these are required or not. In the Subject Name tab, I have "Supply in the request" selected as we will need to specify custom certificate names. For "Extensions" make sure that "Application Policies" has "Client Authentication" as the only policy.

    Client Configuration Specifics 

    Clients will need to have client authentication certificates using the "IBCM Client Authentication" template. The subject name format has to be "machinename$@addomainfqdn". The AD domain FQDN has to be the same AD domain as the ISA server. The machine name has to be a Computer in the AD site that ISA is joined to. For my proof of concept, I put these machines into a special group that wasn't Domain Computers. The client computer itself does not have to be joined to the domain, and in fact, I did my proof of concept with workgroup clients. There just has to be a computer account in AD that maches machinename in the certificate.

    Sample configuration: AD domain is "contoso.com", client machine name is "myclient". Certificate subject has to be "myclient$@contoso.com". MYCLIENT has to be a Computer account in AD. You absolutely have to provision this certificate from the template that extends Authenticated Session or else this won't work, and this is why I couldn't get this to work with a Standalone CA.

     

    ISA Configuration Specifics 

     

    When configuring the web listener for the server publishing rule on the ISA server, you'll need to use a certificate for that listener to connect back to the management point. This is the certificate I mentioned in #1 above. For the listener, you'll need to choose "SSL Client Certificate Authentication" and have it point to Active Directory. Unfortunately, this will end up adding complexity to the configuration, but this is absolutely necessary for security! I'll talk more about why later. For authentication delegation, you'll want to use "No delegation, but client may authenticate directly" (I believe this is only needed in ISA 2006, not 2004).

     

    If you want to restrict the paths that the rule will respond to, you'll need at minimum /sms_mp/*, /ccm_incoming/*, /ccm_outgoing/*, and /ccm_system/*. Other features (software update points, for example) may require additional paths. It's important to note that fallback status points (FSPs) do not use SSL, so you'll need to have the rule accept non-SSL requests, or set up a separate server publishing rule for your FSP. If you're using a FSP, you'll need to also allow /sms_fsp/*.

     

    For the properties of the actual bridging rule, you'll want to go to the "Bridging" tab, and select "Use a certificate to authenticate to the SSL Web server." For this certificate, you'll want to use the client certificate mentioned in #2 above. The server publishing wizard doesn't do this for you, so this will require an additional manual step after running the wizard.

    Summary

    While this isn't a "simple" solution, it has considerably less overhead and complexity than the original certificate mapping-based solution. Instead of having to gather the certificates, and bind them to an AD user account using certificate mapping. All you need to do is create a specifically formatted certificate, and make sure it maps to a computer account in AD. I've done a couple of successful lab deployments with this so far and have been happy with the results. Please let me know if you have any questions or other comments and I'll be happy to try to address them.

    If after reading this and you still have questions, you can request documentation from the ISA Server team. Please send an e-mail jointly to isadocs@microsoft.com and smsdocs@microsoft.com. 

  • Common native mode client -> MP error messages and what to do about them

    Often times, basic communication issues can happen between the client and MP and they can be hard to decipher from logging alone. The error class I'll concentrate on here are the "WINHTTP_STATUS_CALLBACK" errors that may appear in the ccmexec.log on the client. These errors are bubbled up from WinHTTP and the MSDN documentation can be found here. However, only a few of these are relevant to ConfigMgr, and I'll cover a few of these here.

     
    WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED

    This error happens when CRL checking is enabled on the client, but the CRL cannot be accessed. The CRL (certificate revocation list) is what the client downloads in order to verify that the certificate for the MP, DP, or other SSL-capable site role hasn't been revoked by the administrator. When this isn't accessible, the client is blocked from communicating until it can download this list (a better safe than sorry approach). The ways to fix this are: make CRLs available to the client (could be challenging for Internet clients); publish additional CRLs that the client can access (this will require publishing new certificates to SSL site roles since CRLs are stamped in the certificates themselves; turn off CRL checking on clients. This is an infrastructure error.

    WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA

    This error means that the root or intermediate certificate for the CA that issued the certificate for the MP, DP, or other SSL-capable site role isn't in the client's Local Computer Trusted x Certification Authorities store. The way to fix this is to import the root or intermediate certificate into the appropriate store for the local computer (not the user). This is a deployment error.

    WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID

    This means that the hostname the client is connecting to doesn't match the certificate's subject or subject alternate name. I.e., the client is connecting to https://myhost.contoso.com, but the certificate has https://myotherhost.contoso.com. The way to fix this is to change the FQDN the client uses in the ConfigMgr console or to create a new certificate with the correct subject name. This is a certificate error. 

     

    These are by far the most common errors you'll see with SSL communication on a native mode client. I hope this has provided some insight into what those errors mean and how to fix them!

    Update: A "friendly" way to validate the certificate on the MP is to do what I call the browser test. That's to point your browser to https://yourmp and see if any certificate errors are returned. If your browser returns errors, the client most certainly will as well, but the browser provides a somewhat friendlier (and quicker) way to troubleshoot those issues. 

     

  • FAQ: How do I configure a certificate to use multiple subject names?

    Update: I've attached a sample .INF file to this posting. 

    It's a pretty commonly asked question. People want to use different subject names on the Internet and intranet for their MPs. This isn't hard to do, and it requires something called a Subject Alternative Name, often abbreviated as SAN. The SAN can contain multiple alternate names. The SAN will take precedent over the common name (CN), or the regular subject name for a certificate. This is important because it means that if you have "hostnameA" in the CN, and "hostnameB" in the SAN, "hostnameA" will cause a CN mismatch. You will have to have a SAN for "hostnameA" and "hostnameB" for both to work.

    To request certificates with SANs, you have to first configure your CA to support them. On Microsoft CAs, SAN support is not enabled for general requests by default. To enable this, run the following command on your CA server: certutil.exe -setreg policy\editflags +EDITF_ATTRIBUTESUBJECTALTNAME2

    You MUST restart Certificate Services after doing this.

    Now that the CA is configured to support SANs, you need to specially craft your request to use them. If going through web enrollment, you can add a custom attribute in the last section. To specify a SAN of "hostnameA" and "hostnameB", you would use the following syntax: SAN:dns=hostnameA&dns=hostnameB

    Each SAN argument is ampersand separated. This should issue a certificate that will have a "Subject Alternative Name" section under Details. You can verify this by using the browser test by going to each https URL and ensuring that you don't get any certificate errors.

    If you're using an .INF file to request certificates from a CA, the syntax is slightly different. You'll need to add a [RequestAttributes] section, and then use the syntax of: SAN="dns=hostnameA&hostnameB"

    Hopefully this will be enough to help provide some basic knowledge on how to configure SAN support on the CA and in certificates.

  • Firewalls and Internet Based Client Management: Part 2: ISA Bridging with ConfigMgr 2007

    IMPORTANT: This post is being kept for archival purposes, but please reference http://technet.microsoft.com/en-us/library/cc707697(TechNet.10).aspx for official documentation on how to get this configured.

     

    Update #1: Please see the comments below this post. Jason Jones suggested a method that may work better than the one I described. I haven't tested it out yet, but I'll update this post when I do. 

     

    Update #2: GabeB has noted in the comments below, "[i]f you have read the blog entries and still have questions on setup, you can request documentation from the ISA Server team for how to configure ISA with Internet-based site systems in Configuration Manager 2007, send an email jointly to isadocs@microsoft.com and smsdocs@microsoft.com." I also will have some more posts coming up about this hot topic.

     

    I was going to save this for last, but there's been a lot of questions lately about this that I've been fielding, including a pointed interest from attendees at TechReady 6 about ISA bridging. This is not a meant to be a step-by-step guide, and will require a bit of familiarity with ISA, but the information provided here should be adequate to help you get ISA bridging working with ConfigMgr. This was written with ISA 2006 in mind, but most of this applies to 2004 as well. The UI is a little different, but the same principles apply.

     

    Pre-Requisites 

     

    Here's what you'll need in advance to any further ISA configuration:

    1. A web server certificate on the ISA server. If you're using a single Internet MP, the subject name or subject alternate name(s) in this certificate has to match what you're using in the ConfigMgr console for the external FQDN. For the purposes of this post, I performed this configuration with a single MP/DP combination. If you're using multiple MPs and DPs for IBCM, you'll have to have multiple subject alternate names in the certificate adding additional complexity to the rules. ISA 2006 supports multiple subject alternate names (with caveats), ISA 2004 doesn't support this at all.
    2. A client certificate on the ISA server, this certificate needs to be in the Personal store for the Microsoft Firewall service account (fwsrv). This certificate is used by ISA to authenticate itself with the management point when bridging the SSL connections
    3. Your ISA server needs to be domain joined because it needs a means to authenticate ConfigMgr client certificates. It can be joined to a private domain in the DMZ, it does not have to be a corporate domain. You'll also need access to make changes to user accounts on this domain. I'll talk more about why this is needed later.
    4. You'll need some way to access the client's certificates' public key (private key is not necessary). This is related to step 3, and one I'll go more into depth later.

    ISA Configuration Specifics 

     

    When configuring the web listener for the server publishing rule on the ISA server, you'll need to use a certificate for that listener to connect back to the management point. This is the certificate I mentioned in #1 above. For the listener, you'll need to choose "SSL Client Certificate Authentication" and have it point to Active Directory. Unfortunately, this will end up adding complexity to the configuration, but this is absolutely necessary for security! I'll talk more about why later. For authentication delegation, you'll want to use "No delegation, but client may authenticate directly" (I believe this is only needed in ISA 2006, not 2004).

     

    If you want to restrict the paths that the rule will respond to, you'll need at minimum /sms_mp/*, /ccm_incoming/*, /ccm_outgoing/*, and /ccm_system/*. Other features (software update points, for example) may require additional paths. It's important to note that fallback status points (FSPs) do not use SSL, so you'll need to have the rule accept non-SSL requests, or set up a separate server publishing rule for your FSP. If you're using a FSP, you'll need to also allow /sms_fsp/*.

     

    For the properties of the actual bridging rule, you'll want to go to the "Bridging" tab, and select "Use a certificate to authenticate to the SSL Web server." For this certificate, you'll want to use the client certificate mentioned in #2 above. The server publishing wizard doesn't do this for you, so this will require an additional manual step after running the wizard.

     

    These steps should be all you need to configure ISA for bridging. But, it's not enough to have your clients communicating using native mode. Because of the SSL Client Certificate Authentication, you'll have additional maintenance overhead. The overhead is that you'll have to bind these certificates to an account in Active Directory. For my proof of concept, I created a unique user account called "IBCM Users" and mapped the public key of the client certificates used for my site to that account. To do this, in the Active Directory Users and Computers console on your domain controller, go to the View menu and enable "Advanced Features". Now you can add certificates to this account by either right clicking on the account and choosing "Name Mappings", or going to the properties and going to the "Published Certificates" tab to add the certificates. One way you can get the client certificates themselves is to export them from the CA server itself. I'm not aware of end-to-end ways to automate this at the moment, so if anybody knows of a good way to do this, I'd be interested in hearing it. 

     

    After doing this step, clients will be able to mutually authenticate with the ISA server, which in turn will be able to mutually authenticate with the management point giving you a secured end to end communication with traffic inspection and all of the benefits that come with ISA bridging.

     

    Why is this so complicated?

     

    I mentioned earlier that you have to use SSL Client Certificate Authentication when configuring the web listener. If you don't do this, clients will appear to function properly, but you're missing out on one of the key benefits of native mode, and that's your connection is mutually authenticated. By skipping these steps, clients won't know the difference since they don't care if they are authenticated or not, they just care if they can talk to the MP. However, by skipping this step, you're encrypting your communications over SSL and not authenticating any of those connections. This means that along with clients, anybody else can talk to your ConfigMgr IBCM infrastructure from the Internet. That's obviously a Bad Thing.

     

    The other area of complexity is that the ConfigMgr client uses machine certificates for authentication, not user certificates. One reason for this is because we think of clients as machine entities and need to be able to manage clients regardless of if a user is logged in or not. Unfortunately at this time there's no way to glue the user and machine pieces together, so that's why there's this necessary out of band process for having to publish those machine certificates into an account in Active Directory rather than just using a user certificate.

     

    So what do I do?

     

    Most of the certificate process could probably be automated. There's ways to export the certificates' public keys from the CA, and there's ways to bind those certificates to accounts in AD using LDAP for example. I haven't cobbled together an end to end solution, but I'm sure it's possible. Another option is to use SSL tunneling. You won't get traffic inspection, but you'll get a much simpler configuration. It's a trade off of highest security or lowest complexity.

     

    Hopefully this has brought to light some of the complexities around using ISA bridging with ConfigMgr, and some ways to get things working. Please post in the comments if you have any questions or additional points to add.

     

  • Lessons Learned from TechReady 6

    I proctored two labs yesterday around migrating sites from mixed mode to native mode. I talked to a lot of people and tried to answer a lot of questions. There were a few common threads, which I will elaborate here because I found them interesting.

    Native mode is hard

    Native mode setup is something I pretty much take for granted. I've been setting up native mode sites since June of 2006, so it's all pretty much second nature to me. The certificate authority setup and requirements, provisioning certificates, and so on. But, seeing people struggling through the labs brought me back to reality. Native mode has a lot of dependencies and complicated configuration steps required outside of the product for it to work. Unfortunately, there's not a lot we as a product team can do around that. One of the decisions we made was to be agnostic to PKI environments. We just use the certificates that we are given (provided they are in our basic set of parameters). One of the reasons this was done was because in the "real world", most companies would have completely separate people as their "SMS guy" and "PKI guy", so the "SMS guy" would give his or her requirements to the "PKI guy", who in turn would provide the requisite certificates.

    People are really interested in Internet Based Client Management

    I'd say 80% of the questions that were asked of me were about Internet Based Client Management. Things such as basic requirements, different modes, how it works in big hierarchies, and most of all, ISA configuration. I think a lot more people are interested in IBCM than we may have originally estimated, and there's a lot of questions about it. I pretty much figured this was the case given how the forums have been lighting up with questions around it, but hearing it from people out in the field further validates that. 

    ISA setup with ConfigMgr was a very hot topic. I'm going to prioritize my postings here to make my next post specifically on ISA bridging as that was definitely up in there as a "most asked" class of questions.

    Overall, it was a great experience going to TechReady and talking with people out in the field. It's always great working with customers, and those who work with customers, and I hope in my future postings here, I can answer some of the common questions people have had about native mode and IBCM.

  • TechReady 6 Configuration Manager 2007 PKI labs

    I'll be proctoring the "Configuring Configuration Manager 2007 Security including PKI" labs this coming Wednesday. I'll be at both the 1:15PM and 3:00PM sessions. I'll do a write-up here afterward going over some of the common problems that were brought up during the labs and will try to provide some solutions. Chances are if someone's hitting them in the lab, there will be people running into them in the "real world." If you're attending either of those sessions, feel free to come and say hi to me. :)
  • Firewalls and Internet Based Client Management: Part 1

    Let's jump right in to one of the most complicated, and frankly, confusing aspects about Internet Based Client Management (IBCM), and that's how to use it with firewalls. I'm going to focus on its use with ISA server, because that's what I have the most experience using. Because IBCM requires native mode, and this requires SSL, it presents some interesting challenges and configurations required for firewalls.

    When creating the necessary server rules for IBCM using ISA, there's two options: SSL bridging (sometimes called SSL termination or server publishing), or SSL tunneling. Both have their own strengths and weaknesses.

    SSL Tunneling: tunneling is the most simple means of getting traffic through a firewall to your management point and distribution point from the Internet. In essence, it's simply brokering traffic from point A to point B. It is very fast as it's just passing bits around. However, you cannot perform any traffic inspection or use any advanced firewall features because all it's doing is shifting encrypted blobs around. It doesn't know or care about what's in the data, it just wants to move data.

    SSL Bridging: bridging is the most complicated, but also the most secure means of getting traffic through a firewall to your management point and distribution point from the Internet. It requires a certificate on its end, and the client actually uses the SSL bridge as its "management point". The SSL bridge decrypts the traffic, performs any inspection on it, and then re-encrypts it with its own certificate, and passes it to the actual management point. This obviously can have a very large performance penalty as you're doubling the encryption and decryption required. This is also very complicated to set up since you have to double your certificates.

    For comparison, here's a couple pictures I made a while back for a presentation that showed the comparitive differences between the two:

    SSL tunneling:

    SSL tunneling 

    SSL bridging:

    SSL bridging

    Those images put into perspective what the different modes are doing and what they mean to IBCM.

    In Part 2, I will discuss the finer points of actually configuring ISA for use with Configuration Manager with some sample configurations.

  • Welcome

    Hello, readers. My name is Adam Meltzer and I'm a Software Development Engineer in Test for the System Center Configuration Manager product. The purpose of this site is to cover some advanced configuration aspects of the product, notably those around integration with other Microsoft products that may not be covered specifically in our documentation. I hope to answer some of the nagging questions that have been popping up in the forums as of late and put some debates to rest. My areas of expertise are around such new features as native mode, mixed mode, and Internet Based Client Management. I'll be focusing a majority of my posts around these features.

    I try to be as responsive as possible to questions, and if you have anything you want me to cover, just let me know!

     


© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker