You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/nginx/fips-compliance-nginx-plus.md
+23-23Lines changed: 23 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,48 +8,48 @@ type:
8
8
- concept
9
9
---
10
10
11
-
When used with a FIPS 140-2 validated build of OpenSSL operating in FIPS mode, NGINXPlus is compliant with the requirements of FIPS 140-2 (Level1) with respect to the decryption and encryption of SSL/TLS‑encrypted network traffic.
11
+
When used with a FIPS 140-2 validated build of OpenSSL operating in FIPS mode, NGINXPlus is compliant with the requirements of FIPS 140-2 (Level1) with respect to the decryption and encryption of SSL/TLS‑encrypted network traffic.
12
12
13
13
## Introduction
14
14
15
-
[FIPS 140-2](https://csrc.nist.gov/publications/detail/fips/140/2/final) is a United States Federal Standard that relates to the integrity and security of cryptographic modules. FIPS 140-2 Level1 relates specifically to software cryptographic modules and makes stipulations about the cryptographic algorithms that may be used and the self‑tests that must be conducted to verify their integrity.
15
+
[FIPS 140-2](https://csrc.nist.gov/publications/detail/fips/140/2/final) is a United States Federal Standard that relates to the integrity and security of cryptographic modules. FIPS 140-2 Level1 relates specifically to software cryptographic modules and makes stipulations about the cryptographic algorithms that may be used and the self‑tests that must be conducted to verify their integrity.
16
16
17
-
Several operating system vendors have obtained FIPS 140-2 Level1 validation for the OpenSSL Cryptographic Module shipped with their respective operating systems:
17
+
Several operating system vendors have obtained FIPS 140-2 Level1 validation for the OpenSSL Cryptographic Module shipped with their respective operating systems:
-[Oracle Corporation: Oracle OpenSSL FIPS Provider](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4506)
21
21
-[Red Hat, Inc.: Red Hat Enterprise Linux 7 NSS Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4498)
22
22
-[SUSE, LLC: SUSE Linux Enterprise Server Kernel Crypto API Cryptographic Module](https://csrc.nist.gov/projects/cryptographic-module-validation-program/certificate/4508)
23
23
24
-
NGINXPlus uses the OpenSSL cryptographic module exclusively for all operations relating to the decryption and encryption of SSL/TLS and HTTP/2 traffic.
24
+
NGINXPlus uses the OpenSSL cryptographic module exclusively for all operations relating to the decryption and encryption of SSL/TLS and HTTP/2 traffic.
25
25
26
-
When NGINXPlus is executed on an operating system where a FIPS‑validated OpenSSL cryptographic module is present and FIPS mode is enabled, NGINXPlus is compliant with FIPS 140-2 with respect to the decryption and encryption of SSL/TLS and HTTP/2 traffic.
26
+
When NGINXPlus is executed on an operating system where a FIPS‑validated OpenSSL cryptographic module is present and FIPS mode is enabled, NGINXPlus is compliant with FIPS 140-2 with respect to the decryption and encryption of SSL/TLS and HTTP/2 traffic.
27
27
28
28
## Definition of Terms
29
29
30
30
This statement uses the following terms:
31
31
32
32
-**Cryptographic module**: The OpenSSL software, comprised of libraries of FIPS‑validated algorithms that can be used by other applications.
33
33
34
-
-**Cryptographic boundary**: The operational functions that use FIPS‑validated algorithms. For NGINXPlus, the cryptographic boundary includes all functionality that is implemented by the [http_ssl](http://nginx.org/en/docs/http/ngx_http_ssl_module.html), [http_v2](http://nginx.org/en/docs/http/ngx_http_v2_module.html), [stream_ssl](http://nginx.org/en/docs/stream/ngx_stream_ssl_module.html), [mail_ssl](http://nginx.org/en/docs/mail/ngx_mail_ssl_module.html), and [http_auth_jwt](http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html) modules. These modules implement SSL and TLS operations for inbound and outbound connections which use HTTP, HTTP/2, TCP, and mail protocols.
34
+
-**Cryptographic boundary**: The operational functions that use FIPS‑validated algorithms. For NGINXPlus, the cryptographic boundary includes all functionality that is implemented by the [`http_ssl`](http://nginx.org/en/docs/http/ngx_http_ssl_module.html), [`http_v2`](http://nginx.org/en/docs/http/ngx_http_v2_module.html), [`stream_ssl`](http://nginx.org/en/docs/stream/ngx_stream_ssl_module.html), [`mail_ssl`](http://nginx.org/en/docs/mail/ngx_mail_ssl_module.html), and [`http_auth_jwt`](http://nginx.org/en/docs/http/ngx_http_auth_jwt_module.html) modules. These modules implement SSL and TLS operations for inbound and outbound connections which use HTTP, HTTP/2, TCP, and mail protocols.
35
35
36
-
-**NGINXPlus**: The NGINXPlus software application developed by NGINX,Inc. and delivered in binary format from NGINX servers.
36
+
-**NGINXPlus**: The NGINXPlus software application developed by NGINX,Inc. and delivered in binary format from NGINX servers.
37
37
38
-
-**FIPS mode**: When the operating system is configured to run in FIPS mode, the OpenSSL cryptographic module operates in a mode that has been validated to be in compliance with FIPS 140-2 Level2. Most operating systems do not run in FIPS mode by default, so explicit configuration is necessary to enable FIPS mode.
38
+
-**FIPS mode**: When the operating system is configured to run in FIPS mode, the OpenSSL cryptographic module operates in a mode that has been validated to be in compliance with FIPS 140-2 Level2. Most operating systems do not run in FIPS mode by default, so explicit configuration is necessary to enable FIPS mode.
39
39
40
40
-**FIPS validated**: A component of the OpenSSL cryptographic module (the OpenSSL FIPS Object Module) is formally validated by an authorized certification laboratory. The validation holds if the module is built from source with no modifications to the source or build process. The implementation of FIPS mode that is present in operating system vendors’ distributions of OpenSSL contains this validated module.
41
41
42
-
-**FIPS compliant**: NGINXPlus is compliant with FIPS 140-2 Level1 within the cryptographic boundary when used with a FIPS‑validated OpenSSL cryptographic module on an operating system running in FIPS mode.
42
+
-**FIPS compliant**: NGINXPlus is compliant with FIPS 140-2 Level1 within the cryptographic boundary when used with a FIPS‑validated OpenSSL cryptographic module on an operating system running in FIPS mode.
43
43
44
-
## Verification of Correct Operation of NGINXPlus
44
+
## Verification of Correct Operation of NGINXPlus
45
45
46
-
The following process describes how to deploy NGINXPlus in a FIPS‑compliant fashion and then verify that the FIPS operations are correctly performed.
46
+
The following process describes how to deploy NGINXPlus in a FIPS‑compliant fashion and then verify that the FIPS operations are correctly performed.
47
47
48
-
The process uses Red Hat Enterprise Linux (RHEL) version7.4 as an example, and can be adapted for other Linux operating systems that can be configured in FIPS mode.
48
+
The process uses Red Hat Enterprise Linux (RHEL) version7.4 as an example, and can be adapted for other Linux operating systems that can be configured in FIPS mode.
49
49
50
50
### Step 1: Configure the Operating System to Use FIPS Mode
51
51
52
-
For the purposes of the following demonstration, we installed and configured a RHEL7.4 server. The [RedHat FIPS documentation](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-federal_standards_and_regulations#sec-Enabling-FIPS-Mode) explains how to switch the operating system between FIPS mode and non‑FIPS mode by editing the boot options and restarting the system.
52
+
For the purposes of the following demonstration, we installed and configured a RHEL7.4 server. The [RedHat FIPS documentation](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-federal_standards_and_regulations#sec-Enabling-FIPS-Mode) explains how to switch the operating system between FIPS mode and non‑FIPS mode by editing the boot options and restarting the system.
53
53
54
54
For instructions for enabling FIPS mode on other FIPS‑compliant Linux operating systems, see the operating system documentation (for example, [Oracle Linux](https://docs.oracle.com/cd/E52668_01/E54670/html/ol7-fips-enable.html), [Ubuntu](https://ubuntu.com/security/certifications/docs/fips-faq)).
55
55
@@ -86,11 +86,11 @@ openssl md5 /dev/null
86
86
MD5(/dev/null)= d41d8cd98f00b204e9800998ecf8427e
87
87
```
88
88
89
-
### Step 3: Install NGINXPlus on the Operating System
89
+
### Step 3: Install NGINXPlus on the Operating System
90
90
91
-
Follow the [F5 NGINX documentation](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus/) to install NGINXPlus on the host operating system, either directly from the [NGINXPlus repository](https://account.f5.com/myf5), or by downloading the **nginx-plus** package (**rpm** or **deb** package) onto another system and manually installing it on the host operating system.
91
+
Follow the [F5 NGINX documentation](https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus/) to install NGINXPlus on the host operating system, either directly from the [NGINXPlus repository](https://account.f5.com/myf5), or by downloading the **nginx-plus** package (**rpm** or **deb** package) onto another system and manually installing it on the host operating system.
92
92
93
-
**Verify that NGINXPlus is correctly installed**: Run the following command to confirm that NGINXPlus is installed and is using the expected OpenSSL cryptographic module:
93
+
**Verify that NGINXPlus is correctly installed**: Run the following command to confirm that NGINXPlus is installed and is using the expected OpenSSL cryptographic module:
94
94
95
95
```shell
96
96
nginx -V
@@ -101,7 +101,7 @@ built with OpenSSL 1.0.2k-fips 26 Jan 2017
101
101
102
102
Observe that the version number of the OpenSSL library includes the `–fips` suffix. This indicates that the library is FIPS‑validated, but does not confirm that it is running in FIPS mode.
103
103
104
-
**Configure NGINXPlus to serve a simple SSL/TLS‑protected website**: Add the following simple configuration to NGINXPlus:
104
+
**Configure NGINXPlus to serve a simple SSL/TLS‑protected website**: Add the following simple configuration to NGINXPlus:
105
105
106
106
```nginx
107
107
server {
@@ -144,7 +144,7 @@ FIPS 140-2 disallows the use of some cryptographic algorithms, including the Cam
This cipher is considered secure by NGINXPlus and is permitted by FIPS 140-2. The SSL handshake succeeds.
165
+
This cipher is considered secure by NGINXPlus and is permitted by FIPS 140-2. The SSL handshake succeeds.
166
166
167
167
## Which Ciphers Are Disabled in FIPS Mode?
168
168
169
169
The FIPS 140-2 standard only permits a [subset of the typical SSL and TLS ciphers](https://csrc.nist.gov/csrc/media/publications/fips/140/2/final/documents/fips1402annexa.pdf).
170
170
171
-
In the following test, the ciphers presented by NGINXPlus are surveyed using the [Qualys SSL server test](https://www.ssllabs.com/ssltest). In its default configuration, with the `ssl_ciphers HIGH:!aNULL:!MD5` directive, NGINXPlus presents the following ciphers to SSL/TLS clients:
171
+
In the following test, the ciphers presented by NGINXPlus are surveyed using the [Qualys SSL server test](https://www.ssllabs.com/ssltest). In its default configuration, with the `ssl_ciphers HIGH:!aNULL:!MD5` directive, NGINXPlus presents the following ciphers to SSL/TLS clients:
172
172
173
173
<ahref="/nginx/images/nginx-plus-ciphers-nonfips.png"><imgsrc="/nginx/images/nginx-plus-ciphers-nonfips.png"alt="Ciphers presented by NGINX Plus to clients when in non-FIPS mode"width="1024"height="521"class="aligncenter size-full wp-image-62740"style="border:2pxsolid#666666; padding:2px; margin:2px;" /></a>
174
174
175
175
When FIPS mode is enabled on the host operating system, the two ciphers that use the Camellia block cipher (`TLS_RSA_WITH_CAMELLIA_128_CBC_SHA` and `TLS_RSA_WITH_CAMELLIA_256_CBC_SHA`) are removed:
176
176
177
177
<ahref="/nginx/images/nginx-plus-ciphers-fips.png"><imgsrc="/nginx/images/nginx-plus-ciphers-fips.png"alt="Ciphers presented by NGINX Plus to clients when in FIPS mode"width="1024"height="466"class="aligncenter size-full wp-image-62738"style="border:2pxsolid#666666; padding:2px; margin:2px;" /></a>
178
178
179
-
When you configure NGINXPlus with the `ssl_ciphers ALL` directive, NGINXPlus presents all the relevant ciphers available in the OpenSSL cryptographic module to the client. FIPS mode disables the following ciphers:
179
+
When you configure NGINXPlus with the `ssl_ciphers ALL` directive, NGINXPlus presents all the relevant ciphers available in the OpenSSL cryptographic module to the client. FIPS mode disables the following ciphers:
180
180
181
181
-`TLS_ECDH_anon_WITH_RC4_128_SHA`
182
182
-`TLS_ECDHE_RSA_WITH_RC4_128_SHA`
@@ -189,8 +189,8 @@ When you configure NGINX Plus with the `ssl_ciphers ALL` directive, NGINX Plus
189
189
190
190
## Conclusion
191
191
192
-
NGINXPlus can be used to decrypt and encrypt SSL/TLS‑encrypted network traffic in deployments that require FIPS 140-2 Level1 compliance.
192
+
NGINXPlus can be used to decrypt and encrypt SSL/TLS‑encrypted network traffic in deployments that require FIPS 140-2 Level1 compliance.
193
193
194
-
The process described above may be used to verify that NGINXPlus is operating in conformance with the FIPS 140-2 Level1 standard.
194
+
The process described above may be used to verify that NGINXPlus is operating in conformance with the FIPS 140-2 Level1 standard.
0 commit comments