This Exchange Wiki article explains how to configure SSL offloading for the Exchange 2010 protocols and client access services on an Exchange 2010 Client Access server (CAS).
When using a hardware load balancer to load balance traffic to CAS servers belonging to a CAS array, it can depending on the Exchange 2010 topology be beneficial to enable SSL offloading for the Exchange 2010 protocols and client access services on each CAS server in the CAS array. Table of Contents Configuring SSL Offloading for Outlook Web App (OWA)Configuring SSL Offloading for Exchange Control Panel (ECP)Configuring SSL Offloading for Outlook Anywhere (OA)Configuring SSL Offloading for the Offline Address Book (OAB)Configuring SSL Offloading for Exchange ActiveSync (EAS)Configuring SSL Offloading for Exchange Web Services (EWS)Configuring SSL Offloading for the Mailbox Replication Proxy Service (MRSProxy)Configuring SSL Offloading for Autodiscover Service (AS)SSL Offloading in an Exchange 2003/2010 Coexistence ScenarioUsing a Script to Enable SSL OffloadingNotes on reverse SSL
If you configure SSL offloading on an Exchange 2010 CAS server, all user passwords will be sent in clear between the HLB device(s) and the CAS servers, so it's important the traffic is sent over a secure network not accessible by malicious users. If the security policy within the organization states that all passwords should be sent in an encrypted form (even when occurring over a secure network), it's recommended to enable reverse SSL on the HLB device(s). In addition, it's recommended to enable reverse SSL, if the organization does not have a secure network in place between the HLB device(s) and the CAS servers or if there's no noticeable performance gain of offloading SSL to the HLB device(s) in the environment.
When configuring SSL offloading in Exchange 2010, you must also enable SSL acceleration on the LB device(s). This is however outside the scope of this article as the method differs from vendor to vendor.
Conceptual diagrams
The following diagram illustrates client connectivity with SSL Offloading (SSL acceleration) enabled:
The following diagram illustrates client connectivity with SSL bridging (Reverse SSL) enabled:
To configure SSL offloading for Outlook Web App (OWA), you must perform two steps on each CAS server in the respective CAS array. First, you must add a SSL offload REG_DWORD key. To do so, open the registry editor and navigate down to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchange OWA Under this registry key, create a new REG_DWORD key named “SSLOffloaded” and set the value for this key to “1”
So in order to enable SSL offloading for ECP, the only thing we need to do is to disable the SSL requirement on the ECP virtual directory. To do so, let’s open the IIS Manager and expand the Default Web Site. Under the Default Web Site, select the “ecp” virtual directory. Under features view, double-click on “SSL Settings”.
If you already enabled Outlook Anywhere in your environment, you need to use the Set-OutlookAnywhere cmdlet to enable SSL offloading. If this is the case, open the Exchange Management Shell and type the following command: Set-OutlookAnywhere –Identity CAS_server\RPC* -SSLOffloading $true
Running the above command will disable the requirement for SSL for the RPC virtual directory in IIS, which means we don’t need to do so manually like it’s the case with the other services/protocols.
To enable SSL offloading for the Offline Address Book (OAB) you just need to remove the SSL requirement on the OAB virtual directory. To do so, let’s open the IIS Manager and expand the Default Web Site. Under the Default Web Site select the “OAB” virtual directory. Under features view, double-click on “SSL Settings”.
Now uncheck ”Require SSL” and click “Apply” in the Actions pane.
Some of you may probably recall you have read on Microsoft TechNet and various other places, that it isn't supported . This used to be true but is now fully supported (although the Exchange documentation on Microsoft TechNet hasn’t been updated to reflect this yet).
Configuring Exchange ActiveSync to support SSL offload is very simple. You only need to remove the requirement for SSL in IIS. To do so, let’s open the IIS Manager and expand the Default Web Site. Under the Default Web Site select the “Microsoft-Server-ActiveSync” virtual directory. Under features view, double-click on “SSL Settings”.
To configure SSL offloading for Exchange Web services in Exchange 2010 RTM, you must perform two modifications. The first one is to remove the SSL requirement for the EWS virtual directory in IIS. To do so, let’s open the IIS Manager and expand the Default Web Site. Under the Default Web Site select the “EWS” virtual directory. Under features view, double-click on “SSL Settings”.
The Mailbox Replication Proxy (MRSProxy) service is installed on every Exchange 2010 Client Access server. MRSProxy helps to facilitate cross-forest move requests and mailbox move requests to Office 365. By default, MRSProxy is disabled. If enabled, it's enabled in the remote Exchange forest (aka source Exchange forest). Although the MRSProxy service runs under Exchange Web Services (EWS) it's not supported to configure SSL offloading for this service.
The reason for this is because the MRSProxy service code expects the traffic to be signed/encrypted. This means that you must configure SSL bridging for this to work.
To configure SSL Offloading for Autodiscover on Exchange 2010 RTM, open the IIS Manager and expand the Default Web Site. Under the Default Web Site select the “Autodiscover” virtual directory. Under features view, double-click on “SSL Settings”.
If you're working with a large organization with many Exchange 2010 Client Access services , you may want to accelerate the steps we went through above. To configure SSL offloading using a scripted method, see this blog post. The following cmdlets are a summary of tasks required to configure SSL offloading for Exchange Server 2010 SP1 on each Client Access server: Set-OutlookAnywhere –Identity "$($env:COMPUTERNAME)\RPC (Default Web Site)" -SSLOffloading $true New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\MSExchange OWA' -Name SSLOffloaded -Value 1 -PropertyType DWORD Import-Module webadministration Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/OWA" Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/ECP" Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/OAB" Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/EWS" Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/Microsoft-Server-ActiveSync" Set-WebConfigurationProperty -Filter //security/access -name sslflags -Value "None" -PSPath IIS:\ -Location "Default Web Site/Autodiscover" iisreset /noforce
If you enable reverse SSL (aka SSL bridging) on the HLB devices, you will not need to perform the above steps on each CAS server in the CAS array. However, bear in mind enabling reverse SSL on the HLB device(s) will mean the SSL workload (encryption and decryption tasks) which are CPU intensive won't be moved away from the CAS servers. Instead, the SSL workload will occur on both the HLB device(s) and the CAS servers. With that said, if you do not enable reverse SSL, passwords will be sent in clear between the HLB device(s) and the CAS servers, so it's important this traffic occurs over a secure network not accessible by malicious users.
Whether you should use Exchange 2010 SSL offloading or the reverse SSL method is up to the respective organization to decide. If the CAS servers can handle all expected workload and if you do not have a secure network in place between the HLB device(s) and the CAS servers, it's recommended to enable reverse SSL.
Richard Mueller edited Revision 145. Comment: Fix zero in <a name> tag in HTML
Ed Price - MSFT edited Revision 142. Comment: Added tags
Jewel Lambert edited Revision 137. Comment: Corrected spelling typo
Henrik Walther edited Revision 132. Comment: updated to include info on how to configure SSL offloading for MRSProxy
Ed Price - MSFT edited Revision 127. Comment: White space issues
Ed Price - MSFT edited Revision 122. Comment: Added tags. Spacing.
Henrik Walther edited Revision 115. Comment: added new section about enabling SSL offloading in Exchange 2003/2010 coexistence scenario
Ed Price - MSFT edited Revision 91. Comment: Nominating this one to be featured. Great job!
Gaff Tastic edited Revision 86. Comment: Hi I have the same question as Joshua. I have two Internet facing sites and I am offloading SSL to a hardware load balancer in each site. CAS redirection is not working for me because CAS in both sites have external URLs. I am using the same external URL for OWA for both sites and my external DNS provider loand balances based on geographic location. So the problem I have is a user with mailbox in Site B (US) is visiting Site A (Europe). When the user is at hotel in Europe when she access OWA externally the request is going to the Site A CAS (the extneral DNS provder directs this) and when she logs in she is not redirected to the CAS in SITE B where her mailbox is instead she gets the error "A server configuration change is temporarily preventing access to your account. Please close all Internet Explorer windows and try again in a few minutes. If the problem continues, contact your helpdesk" Any Ideas?
Martin Coetzer edited Revision 83. Comment: Adding more scripts for PowerShell automation. Blog post uses appcmd and is for RTM
Henrik Walther edited Revision 16. Comment: Added OA content
Henrik Walther edited Revision 17. Comment: Added ECP information
Henrik Walther edited Revision 34. Comment: Added node about review and approval
Henrik Walther edited Revision 36. Comment: Added "Scripted method" section
Great article Henrik. The section on web.config repeats itself, I guess the last part should be moved to the end after the AS bit?