Enable FIPS and set up a CA-signed certificate for an existing deployment
On this page
Enable FIPS for an existing deployment
Instructions differ for the two different types of deployment. This instruction set is specific to an existing deployment. Be sure to follow the instructions for your deployment type. Before enabling FIPS, see FIPS 140-2 compliant cryptography: Before you begin.
See also Instructions specific to a new deployment.
Upgrading users, before you begin, back up your aesconf folder and cacerts.bcfks file available in the following location:
WebHelpDeskHomeDir/conf
-
Complete the following steps to enable Windows FIPS mode and harden Schannel. This enables Windows FIPS mode and restricts the OS to FIPS-approved protocols and ciphers only.
-
Stop all services.
-
Open Notepad and copy the commands below into a text file.
@echo off reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy" /v Enabled /t REG_DWORD /d 1 /f for %%P in ("SSL 2.0" "SSL 3.0" "TLS 1.0" "TLS 1.1") do ( for %%R in (Server Client) do ( reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\%%~P\%%R" /v Enabled /t REG_DWORD /d 0 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\%%~P\%%R" /v DisabledByDefault /t REG_DWORD /d 1 /f ) echo [OK] Disabled %%~P ) @echo off for %%P in ("TLS 1.2" "TLS 1.3") do ( for %%R in (Server Client) do ( reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\%%~P\%%R" /v Enabled /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\%%~P\%%R" /v DisabledByDefault /t REG_DWORD /d 0 /f ) echo [OK] Enabled %%~P ) reg add "HKLM\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002" /v Functions /t REG_SZ /d "TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" /f echo [OK] FIPS cipher suite order configured @pause -
Save the file as
fips.batinto the WebHelpDesk home directory. -
Execute the
fips.batfile.
-
-
Copy the cacerts.bcfks file (Bouncy Castle FIPS KeyStore) from backup if it’s not available:
WebHelpDeskHomeDirectory/conf -
Set
WHD_FIPS_ENABLEDtotruein theconf\whd.envfile:-
Open the following file in a text editor:
C:\Program Files\WebHelpDesk\conf\whd.env -
Locate the
WHD_FIPS_ENABLEDsetting and change it toWHD_FIPS_ENABLED=true.
-
-
Switch to the FIPS service wrapper:
copy /Y "C:\Program Files\WebHelpDesk\service\whd-backend- fips.xml.template" "C:\Program Files\WebHelpDesk\service\whd-backend.xml"
-
Follow instructions to Set up a CA-signed certificate.
-
Restart all services.
-
To verify that FIPS is active, open the WHD admin UI and click Setup > General > Authentication. The FIPS Compliant Cryptography row should have a green dot followed by
Enabled.
Set up a CA-signed certificate
A CA-signed certificate is not required for a test server. Caddy's tls internal auto-generates a locally-trusted certificate with FIPS-approved ciphers.
-
Download OpenSSL to complete these instructions.
-
-
Open the command prompt as an administrator.
-
Run the following commands:
cd /d "C:\Program Files\WebHelpDesk\conf" openssl genrsa -out key.pem 2048
-
-
Create an OpenSSL config for the CSR:
-
Create the file
C:\Program Files\WebHelpDesk\conf\csr.cnfusing Notepad:notepad "C:\Program Files\WebHelpDesk\conf\csr.cnf" -
Paste the following content into the
csr.snffile you created, and then edit the values in the[dn]and[alt_names]sections to match your environment:[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn req_extensions = v3_req [dn] C = US ST = Texas L = Austin O = Your Organization OU = IT Department CN = helpdesk.yourcompany.com [v3_req] subjectAltName = @alt_names keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [alt_names] DNS.1 = helpdesk.yourcompany.com DNS.2 = helpdesk IP.1 = 10.0.0.50
-
Save the updated file.
-
-
Generate the CSR:
openssl req -new -key key.pem -out whd.csr -config csr.cnf -
Verify the CSR:
-
Run the following command:
openssl req -text -noout -in whd.csr -
Confirm the following:
- The Subject matches your organization.
- The Subject Alternative Names list all hostnames or IP addresses.
- The Signature Algorithm is
sha256WithRSAEncryption(orecdsa-with-SHA256).
-
- Send
whd.csrto your Certificate Authority. You will receive:-
A Certificate (
cert.pemorwhd.crt) - A CA chain or intermediate certificates (
ca-chain.pem)
-
A Certificate (
- Create the Full Certificate Chain:
Combine the certificate and the CA chain into one file:
cd /d "C:\Program Files\WebHelpDesk\conf" type cert.pem ca-chain.pem > fullchain.pem
Rename the file to
cert.pem:del cert.pem rename fullchain.pem cert.pem
- Place the files in the required locations:
Place the private key generated in Step 1 in the following location:
C:\Program Files\WebHelpDesk\conf\key.pemPlace the Full Certificate Chain generated in
tep 6 in the following location:C:\Program Files\WebHelpDesk\conf\cert.pemVerify that both files are present:
dir "C:\Program Files\WebHelpDesk\conf\key.pem" "C:\Program Files\WebHelpDesk\conf\cert.pem"
- Verify that the key and certificate match:
Run the following commands:
openssl x509 -noout -modulus -in cert.pem | openssl md5 openssl rsa -noout -modulus -in key.pem | openssl md5
Verify that both commands output the same hash value.
- Update the
conf\whd.envfile:Open the
conf\whd.envfile in Notepad:notepad "C:\Program Files\WebHelpDesk\conf\whd.env"Set the following values:
WHD_TLS_CERT=C:\Program Files\WebHelpDesk\conf\cert.pem
WHD_TLS_KEY=C:\Program Files\WebHelpDesk\conf\key.pem
-
Restart the application services.
-
Verify the results:
openssl s_client -connect localhost:8443 -showcerts