Thursday, September 24, 2015

VMware Certificate Authority – My Favorite New Feature of vSphere 6.0 – Part 2 – The Architecture

A repost from my latest consulting Blog!


Picking up where Part 1 left off, in this part I discuss the architecture decisions that I have seen commonly used for the VMware Certificate Authority.  This comes from many conversations with customers, VMware Professional Services, VMware Engineering and even VMware Support.  In addition to these sources I recently participated in many a conversation at VMworld.  I spoke at several sessions as well as was manning the VMworld booth.  I ended up with the opportunity here to better appreciate the complexity, and also got to talk with some fantastic people about their environments. 

Architecture of the Environment

Getting back to the conversation, the architecture of the environment becomes one that is incredibly important to design up front.  This allows for an administrator to avoid much of the complexity and allows for security to be kept.  That being said, from my current experiences I have seen three different ways that environments are the most frequently being configured:
  • VMware Certificate Authority as the root CA in the default configuration
  • VMware Certificate Authority used but operating as a subordinate CA
  •  Hybrid model using custom Machine SSL Certificates, but using VMware Certificate Authority in its default configuration.

Before we get into them however keep in mind that as I mentioned in my previous blog series regarding the architecture changes for vSphere 6.0, there are two basic platform service controller architectures that should be considered when designing your certificate infrastructure.

Be sure to note up front whether an external or embedded Platform Services controller is to be used as this is important. The difference being that a separate Machine SSL endpoint certificate would be required for each system.

This means that on an embedded system a single certificate is required as shown:

Or for an external environment 2 or more will be needed depending on the size of the infrastructure.  An example is shown:

For further details on the different platform services controller architectures, and to become familiar with them before proceeding, see:

Using VMware Certificate Authority as the root CA in the default configuration

This is by far the most common configuration I have seen deployed. Of course this is also the default which explains WHY this is the case. Personally I fully support and recommend actually using this configuration in almost all circumstances. The beauty of it is that it takes very little configuration to be fully secured. Why change something if you do not need to, right?  By default, after installation everything is already configured to use VMware Certificate Authority and has already had certificates granted which are deployed to all solutions and ESXi hosts which are added to vCenter Server.

In this situation the only thing that is required to secure the environment is to download and install the root certificate (or chain) from VMware Certificate Authority:

Note: When you download this file in vSphere 6.0, it simply is called ‘download’.  This a known issue in some browsers.  It actually is a ZIP file which contains the root certificate chain. 

Once downloaded and extracted, the certificate(s) are the file(s) ending in .0.  To install simply rename .0 to .cer and double click to import to the Windows certificate store. Repeat the procedure for all certificates in the chain. The certificates should be installed into the Local Machine’s Trusted Root Certificate Authority or the Intermediate Certificate Authority stores respectively.  If using Firefox, import to its proper store to ensure that the chain is trusted.

The next time you go to the web page, it will show as trusted:

This can potentially take some time if there are many clients which need to have the certificate’s imported to them, however is the easiest (and default) deployment model.

Using VMware Certificate Authority as a subordinate CA

This mode is less commonly used but it is the second largest deployment type I have seen. This takes a bit of work but essentially it allows for you to integrate VMware Certificate Authority into an existing certificate infrastructure. The big benefit to this is that you will issue completely signed certificates in the existing hierarchy, and in many cases no installation of the certificate chain is required.  The downside on the other hand is that you will need a subordinate CA certificate to be able to implement the configuration in this way. This in some cases that I have seen is simply not allowed by policy.  This is where the hybrid configuration comes into play as discussed next.

To configure this it is done by a command line utility called certificate-manager.

Once launched Option 2, is used to Replace VMCA Root Certificate with Custom Signing Certificate and replace all Certificates.  The first part of the process is to generate the private key, and the certificate request that will be submitted to the Certificate Authority.  To do this, select Option 1:

Once generated, submit the request to the CA for issuance of the certificate as well as collection of the root certificate chain. For more details, see KB article Configuring VMware vSphere 6.0 VMware Certificate Authority as a subordinate Certificate Authority (2112016).

When the new certificate has been collected, it is a matter of providing this new certificate as well as key, to the manager utility.  If the certificate-manager screen is still open, select Option 1 to continue otherwise Select Option 2 and then Option 2 again.  It will prompt to provide the details for the certificate including all details for the certificate that is to be issued. Once complete, services are stopped and restarted:

After this the Machine Certificate (aka the Reverse Proxy certificate) can be regenerated from the VMware Certificate Authority for the vCenter Server(s) that are in the environment.  This is done by selecting Option 3 from the menu:

This will prompt for a Single Sign-On administrator password, as well as, the Platform Services Controller IP if the system is a distributed installation. It will then prompt to enter the Information for the certificate and restart the vCenter services. The server has its reverse proxy certificate replaced at this point.   

The next step is to replace the solution user certificates.  This can be done by running Option 6 from certificate-manager:

This completes the configuration of the custom certificate authority certificates for the vCenter components, but it is not quite done yet.

The final step is to replace the ESXi host certificates.  This is done directly from each host’s configuration in the Web Client.  The first step here is to set the details for the certificate in the advanced settings for the vCenter Server:

When complete, navigate to an ESXi host and select, Manage > Certificates.  On this screen, click Renew.  This will regenerate the certificate for this host:

In any case this is the most complex of the architectures shown, but it also is the most environmentally integrated as well. It provides an additional level of security that is required to satisfy compliance regulatory requirements.

Using Hybrid Configurations for the Reverse Proxy but VMware Certificate Authority for all other certificates

Hybrid configurations are the middle ground in this discussion. It is a balance between security and complexity and also satisfies the security team in many cases as well.  The biggest issues that I have seen that require a configuration such as this are:
  • Granting or purchasing a Subordinate CA certificate is not possible due to policy or cost
  • Issuing multiple certificates to the same server, one for each service is not something that can be done due to policy or regulatory requirements.
  •  Controls to approve or deny certificate requests are required.

In these cases although it may not be possible to fully integrate VMware Certificate Authority into the existing CA Hierarchy it is possible to still provide added levels of security. In this case it is possible to leave VMware Certificate Authority in the default configuration, and only replace the Machine certificate only.  You can do this by using Option 1 from the certificate Manager tool.

When configured the environment will use the corporate CA certificate for external user facing communication because everything now goes through the reverse proxy. On the other side of things the other components are still secured by certificates from VMware Certificate Authority. The configuration would look like this:

As you can clearly see, the architectures are varied and also provide quite a bit of flexibility for the configuration.

Which method should be configured?

The only remaining question is that of what method is the best to use.  I said it in one of the previous sections but my personal preference is actually use the keep it simple methodology and use the default configuration. The reason for this is that it is the simplest configuration, and the only requirement is that the root certificate is installed on clients rather than custom certificates having to be regenerated and then the configuration modified.
Obviously where policy or regulatory compliance is concerned there may be a need to integrate it.  This, although more complex than doing nothing, is also something that is much easier than in prior versions.

Hopefully all of this information has been of use to you for consideration while designing or configuring your different vSphere environments.  As can be seen the complexity has been dramatically reduced, and only promises to get better. For now I stop however and simply say that I can’t wait for when I complete the next part of this blog, which will give some details that will make all of this even simpler.