Enable FIPS and set up a CA-signed certificate for a new deployment
On this page
Enable FIPS for a new deployment
Instructions differ for the two different types of deployment. This instruction set is specific to a new 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 an existing 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.
-
-
Execute following tasks to create a Keystore (Bouncy Castle FIPS KeyStore) file:
-
Open the command prompt as an administrator.
-
Change to the installation directory:
cd /d "C:\Program Files\WebHelpDesk" set "WHD_HOME=C:\Program Files\WebHelpDesk" set "JAVA=%WHD_HOME%\bin\jre\bin" set "BC_JAR=%WHD_HOME%\bin\lib\bc-fips.jar" set "PASS=changeit"
-
Create the AES Key keystore file:
"%JAVA%\keytool" -genseckey -alias AES_KEY -keyalg AES -keysize 256 -storetype BCFKS -keystore "%WHD_HOME%\conf\cacerts.BCFKS" storepass %PASS% -keypass %PASS% -provider org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider providerpath "%BC_JAR%"
-
-
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