The manual covers configurations and suggestions to optimize the performance and security of T6 Planning applications on the IIS server. Focusing on the HTTPS protocol, emphasizing HTTP compression to improve bandwidth efficiency. It details the implementation of SSL/TLS for secure communication, including step-by-step instructions for importing certificates in IIS 8.0 and creating self-signed certificates. The manual also addresses encryption algorithms and SSL/TLS protocols, recommending the disabling of SSL 3.0 due to vulnerabilities and migration to more secure protocols like TLS 1.0, TLS 1.1, or TLS 1.2. In summary, the manual provides specific guidelines for configuring IIS, prioritizing the security and efficiency of T6 Planning applications, especially in the context of HTTPS protocol and encryption settings.
This manual aims to provide configuration suggestions in IIS to offer instructions for HTTPS protocol settings to enhance the performance and security of T6 Planning applications.
HTTP compression reduces the size of transmitted data before reaching the client computer. This improves the utilization of available bandwidth and consequently enhances the performance of the T6 Planning application. It can be configured for both static and dynamic modes.
Static compression is installed by default from IIS version 7.0 on Windows Server. Dynamic compression will be described step by step in this chapter.
In this section, we will cover the installation of dynamic compression in IIS on Windows Server, as described below.
Note: The images in this section are based on Windows Server 2012 R2.
Open the Windows Control Panel and select the Small Icons option.
Next, click on Administrative Tools.
In the Administrative Tools screen, click on Server Manager.
On the left side of the Server Manager screen, in the hierarchical Server Manager panel, click on IIS. In the right-hand field, scroll down to the Roles and Features option.
Below Roles and Features, you will see a list of installed services. Try to locate the "Dynamic Content Compression" function. If found, proceed to the next topic and enable compression.
If the "Dynamic Content Compression" function is not found, in the upper right corner of the screen, go to -> Tasks -> Add Roles and Features.
The Add Role and Feature Services window will appear. Click Next.
In the Installation Type step, select the Role-Based or Feature-Based Installation option and click Next.
In the Server Selection step, check the Select a server from the server pool option, and click Next.
In the Server Roles step, follow the options: Web Server (IIS)” -> Web Server -> Performance, and check the "Dynamic Content Compression" box. Then click Next.
The Features step will display the features for addition; as we are adding a role, ignore this screen and click Next.
On the Confirm Installation Selection screen, click the Install option.
On the Installation Progress screen, wait for the entire installation process to load, and after the successful installation message appears, click Close.
Return to the Roles and Features field and click -> Tasks -> Refresh.
Note that the "Dynamic Content Compression" function will appear in the list.
To configure dynamic compression in IIS on Windows Server, access the Windows Control Panel and select the Small Icons option.
Next, click on Administrative Tools.
In the Administrative Tools screen, click on Internet Information Services (IIS) Manager.
In the IIS Manager screen, click on the Sites folder and then choose the WebSite related to T6 Planning. In the options that appear on the side, double-click on the "Compression" icon.
The Compression properties will be displayed. Check the options for Enable Dynamic Content Compression and Enable Static Content Compression. Then in the Actions panel, click Apply.
Returning to the resource display screen, double-click on the MIME Types icon.
In the list of extensions, locate the ".js" extension. If the MIME type for this extension is set to "application/x-javascript," double-click on it to edit. In the dialog box that opens, enter "text/javascript" in the MIME Type field and click OK.
Next, it is necessary to run the "EnableCompression.cmd" file as an administrator, located in the WebT6 Planning -> Commands folder within the T6 Planning folder as shown in the image below:
The HTTPS protocol is an extension that adds a security layer to HTTP to make browsing more secure. It uses the Secure Sockets Layer (SSL) and its successor, Transport Layer Security (TLS), to create a secure communication channel between the client's computer and the server, encrypting the transmitted data so that only the client's computer can understand it.
Enabling HTTPS requires the use of an SSL/TLS certificate to ensure secure communication between the client's computer and the server. These certificates, when signed by trusted and publicly recognized certification authorities, ensure that the server being connected to is indeed the expected address, reducing the risk of fraud and interception of data transmitted over the network.
Open IIS 8 and click on the name of the IIS server.
In the options that appear on the side, double-click on the Server Certificates icon.
In the Server Certificates screen, locate the Actions panel and click on Import. The Import Certificate dialog box will appear. Select the certificate to be imported, enter the certificate's import password, and click OK.
Returning to the IIS 8 screen, click on the Sites folder and then right-click on Default WebSite.
In the dropdown menu, click on Edit Bindings...
The Site Bindings dialog box will appear. Click the Add button.
In the Add Site Binding dialog box, in the Type field, select "https". In the SSL Certificate field, select the certificate imported for this purpose, and then click OK.
If you want all connections to T6 Planning to be made via HTTPS, return to the IIS 8 screen, click on the Sites folder, and then choose the WebSite related to T6 Planning. In the options that appear on the side, double-click on the "SSL Settings" icon.
The properties of SSL Settings will be displayed. Check the "Require SSL" checkbox and in the Actions panel, click the Apply option.
To use WCF (Excel Add-In) with HTTPS, follow these steps:
web.config
file and open it using a text editor;web.config
file, find the line <serviceMetadata httpGetEnabled="true" />
and comment it out using <!-- -->
<!--<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>-->`;
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
;web.config
file, find the line <wcfHttpTransport hostNameComparisonMode="StrongWildcard" manualAddressing="False" maxReceivedMessageSize="500000000" authenticationScheme="Anonymous" bypassProxyOnLocal="False" realm="" useDefaultWebProxy="True" />
and comment it out using <!-- -->
;<!--<httpsTransport hostNameComparisonMode="StrongWildcard" manualAddressing="False" maxReceivedMessageSize="500000000" authenticationScheme="Anonymous" bypassProxyOnLocal="False" realm="" useDefaultWebProxy="True"/>-->`;
<httpsTransport hostNameComparisonMode="StrongWildcard" manualAddressing="False" maxReceivedMessageSize="500000000" authenticationScheme="Anonymous" bypassProxyOnLocal="False" realm="" useDefaultWebProxy="True"/>
;web.config
file;Inside the
web.config
file, there will be the following line that will help us locate where to make the changes:<!-- Uncomment to allow HTTPS support -->
;
This chapter provides an overview of how the basic security of ASP.NET works and the best practices for configuring it for use with T6 Planning.
Since T6 Planning relies on Microsoft IIS and the .NET Framework, it is also affected by their security model. Therefore, it is often not enough to configure T6 Planning’s security while neglecting the security aspects of the environment where T6 Planning is deployed.
Essentially, here’s what you need to know about the IIS security model:
Authentication is the process of obtaining credentials (such as login and password) and validating this information against an entity (such as a database or domain server). If this validation is successful, the authorization process determines the access level for the authenticated user.
ASP.NET provides three types of authentication:
This authentication model is most suitable when T6 Planning is accessed via the company’s intranet. In this model, Microsoft Active Directory architecture is typically used to authenticate users. Depending on the configuration and parameters set for T6 Planning, a login screen may not be necessary, as the credentials used for Windows login will be reused.
When using this model, the following IIS authentication methods must be considered:
This authentication model is most suitable when T6 Planning is accessed over the Internet. A login screen is used where the user enters their credentials to access T6 Planning. The entire authentication process is managed by T6 Planning itself.
Communication protocols like HTTP and HTTPS were developed to standardize the distribution of information over the Internet between clients and web servers. These protocols also define how transactions between client and server are conducted by establishing basic rules.
The aim here is not to describe these protocols in technical detail but to highlight their security differences.
Most web server applications use HTTP (Hypertext Transfer Protocol) as their communication protocol. HTTP is an application-level protocol responsible for handling requests and responses between client and server.
In HTTP, data is transmitted as plain text over the network. This means that anyone monitoring traffic between client and server can view all the transmitted information.
HTTPS is an extension of HTTP that adds a layer of security to make browsing more secure. HTTPS encrypts transmitted data, scrambling it so that only the intended recipient can decipher it. While such data can still be intercepted, it will be unreadable to unauthorized individuals or computers.
HTTPS also ensures that the website being accessed is authentic. This is achieved through a certificate issued only by certification authorities. Browsers recognize major certification authorities and automatically accept certificates signed by them, verifying their authenticity and the legitimacy of the corresponding website.
Choosing whether to use HTTP or HTTPS with T6 Planning is entirely up to the company, and decisions vary case by case. However, it is highly recommended to use HTTPS, even if it involves costs for acquiring a digital certificate. Doing so ensures that all information is transmitted securely, preventing unauthorized access to sensitive data by intruders.
To enable a secure connection in the Internet Information Service (IIS), follow these steps:
Below is a table of algorithms supported by types of cryptography protocols. This table is also available at the link: https://msdn.microsoft.com/en-us/library/mt767781(v=vs.85).aspx.
Cipher suite string | TLS/SSL Protocol Versions |
---|---|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_RSA_WITH_AES_128_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | TLS 1.2 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_WITH_RC4_128_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_WITH_RC4_128_MD5 | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_WITH_NULL_SHA256* | TLS 1.2 |
TLS_RSA_WITH_NULL_SHA* | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
SSL_CK_RC4_128_WITH_MD5* | SSL 2.0 |
SSL_CK_DES_192_EDE3_CBC_WITH_MD5 | SSL 2.0 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521 | TLS 1.2 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521 | TLS 1.2, TLS 1.1, TLS 1.0 |
TLS_RSA_WITH_DES_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_EXPORT_WITH_RC4_40_MD5 | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_RSA_WITH_NULL_MD5 | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_DHE_DSS_WITH_DES_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA | TLS 1.2, TLS 1.1, TLS 1.0, SSL 3.0 |
SSL_CK_DES_64_CBC_WITH_MD5 | SSL 2.0 |
SSL_CK_RC4_128_EXPORT40_WITH_MD5 | SSL 2.0 |
* Used only when the application explicitly requests.
SSL (Secure Sockets Layer) and its successor TLS (Transport Layer Security) are encryption protocols designed for the internet that allow secure communication between the "Client" and "Server" sides of a web application. SSL/TLS work essentially in the same way, using public and private keys and a digital certificate. Below, we will show how to enable and disable support for SSL and TLS protocols through the Windows Registry Editor to help you manage and troubleshoot security issues.
To add subkeys and change their respective values to enable or disable SSL 2.0 support, follow the steps below.
To open the Registry Editor, go to the Windows start screen, type "regedit.exe," right-click, and choose the "Run as administrator" option.
The Registry Editor's navigation area displays folders, with each folder representing a pre-defined key on the local computer.
In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
Right-click on the Protocols key, then click New -> Key and name the new subkey SSL 2.0.
Right-click on the SSL 2.0 subkey, click New -> Key, and name it Client for this new subkey.
Right-click again on the SSL 2.0 subkey, click New -> Key, and name it Server for this new subkey.
Right-click on the Client subkey, click New -> DWORD (32-bit) Value, and name the new value DisabledByDefault.
Double-click the DWORD value DisabledByDefault, and the Edit DWORD (32-bit) Value screen will appear.
Right-click on the Server subkey, click New -> DWORD (32-bit) Value, and name it "Enabled."
Double-click the DWORD value Enabled, and the Edit DWORD (32-bit) Value screen will appear.
Close the Registry Editor. The changes will take effect the next time Windows is restarted.
To add subkeys and change their respective values to enable or disable SSL 3.0 support, follow these steps:
To open the Registry Editor, go to the Windows start screen, type "regedit.exe," right-click, and choose the "Run as administrator" option.
The Registry Editor's navigation area displays folders. Each folder represents a pre-defined key on the local computer.
In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
Right-click with the mouse on the Protocols key, click New -> Key, and name the new key SSL 3.0.
Right-click with the mouse on the SSL 3.0 key, click New -> Key, and name it Client for the new key.
Right-click again on the SSL 3.0 key, click New -> Key, and name it Server for the new key.
Right-click with the mouse on the Client key, click New -> DWORD (32-bit) Value, and name the new DWORD value "DisabledByDefault."
Double-click the DWORD value DisabledByDefault, and the Edit DWORD (32-bit) Value screen will appear.
Right-click with the mouse on the Server key, click New -> DWORD (32-bit) Value, and name it "Enabled."
Double-click the DWORD value Enabled, and the Edit DWORD (32-bit) Value screen will appear.
Close the Registry Editor. The changes will take effect the next time Windows is restarted.
Note: A vulnerability has been found in version 3.0 of the SSL protocol. To ensure that only secure versions are used, we suggest disabling it on Windows and migrating to more secure security protocols such as TLS 1.0, TLS 1.1, or TLS 1.2.
To add subkeys and change their respective values to enable or disable TLS 1.0 support, follow the steps below:
To open the Registry Editor, go to the Windows start screen, type "regedit.exe," right-click, and choose the "Run as administrator" option.
The Registry Editor's navigation area displays folders. Each folder represents a pre-defined key on the local computer.
In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
Right-click with the mouse on the Protocols key, click New -> Key, and name the new key TLS 1.0.
Right-click with the mouse on the TLS 1.0 key, click New -> Key, and name it Client for the new key.
Right-click again on the TLS 1.0 key, click New -> Key, and name it Server for the new key.
Right-click with the mouse on the Client key, click New -> DWORD (32-bit) Value, and name the new DWORD value "DisabledByDefault."
Double-click the DWORD value DisabledByDefault, and the Edit DWORD (32-bit) Value screen will appear.
Right-click with the mouse on the Server key, click New -> DWORD (32-bit) Value, and name it "Enabled."
Double-click the DWORD value Enabled, and the Edit DWORD (32-bit) Value screen will appear.
Close the Registry Editor. The changes will take effect the next time Windows is restarted.
To add subkeys and change their respective values to enable or disable TLS 1.1 support, follow these steps:
To open the Registry Editor, go to the Windows start screen, type "regedit.exe," right-click, and choose the "Run as administrator" option.
The Registry Editor's navigation area displays folders. Each folder represents a pre-defined key on the local computer.
In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
Right-click with the mouse on the Protocols key, click New -> Key, and name the new key TLS 1.1.
Right-click with the mouse on the TLS 1.1 key, click New -> Key, and name it Client for the new key.
Right-click again on the TLS 1.1 key, click New -> Key, and name it Server for the new key.
Right-click with the mouse on the Client key, click New -> DWORD (32-bit) Value, and name the new DWORD value "DisabledByDefault."
Double-click the DWORD value DisabledByDefault, and the Edit DWORD (32-bit) Value screen will appear.
Right-click with the mouse on the Server key, click New -> DWORD (32-bit) Value, and name it "Enabled."
Double-click the DWORD value Enabled, and the Edit DWORD (32-bit) Value screen will appear.
Close the Registry Editor. The changes will take effect the next time Windows is restarted.
Below are the steps to add subkeys and change their respective values to enable or disable TLS 1.2 support.
To open the Registry Editor, go to the Windows start screen, type "regedit.exe," right-click, and choose the "Run as administrator" option.
The Registry Editor's navigation area displays folders. Each folder represents predefined keys or subkeys on the local computer.
In the Registry Editor, navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\
Right-click with the mouse on the Protocols key, click New -> Key, and name the new key TLS 1.2.
Right-click with the mouse on the TLS 1.2 key, click New -> Key, and name it Client for the new subkey.
Right-click again on the TLS 1.2 key, click New -> Key, and name it Server for this new subkey.
Right-click with the mouse on the Client subkey, click New -> DWORD (32-bit) Value, and name the new DWORD value "DisabledByDefault."
Double-click the DWORD value DisabledByDefault, and the Edit DWORD (32-bit) Value screen will appear.
Right-click with the mouse on the Server key, click New -> DWORD (32-bit) Value, and name it "Enabled."
Double-click the DWORD value Enabled, and the Edit DWORD (32-bit) Value screen will appear.
Close the Registry Editor. The changes will take effect the next time Windows is restarted.