Re: PostgreSQL 18 FIPS mode in Windows

From: Daniel Gustafsson <daniel(at)yesql(dot)se>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: sutyak <sutyak(at)proton(dot)me>, "pgsql-general(at)lists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: PostgreSQL 18 FIPS mode in Windows
Date: 2026-09-24 20:16:45
Message-ID: A9CCDF68-0245-41F1-8E34-2898C1C13289@yesql.se
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-general

> On 24 Sep 2026, at 22:13, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> sutyak <sutyak(at)proton(dot)me> writes:
>> The steps I have already taken are:
>
>> - Install PostgreSQL 18.6 windows-x64
>> - Install OpenSSL 3.5.8 with FIPS Provider 3.1.2
>> - Enable pgcrypto extension via pgAdmin
>> - set builtin_crypto_enabled to 'fips'
>> - Executing SELECT fips_mode(); always returns false.
>> - Verified FIPS is not being enforced by executing SELECT encode(digest('test', 'md5'), 'hex'); and it always returns a value.
>
>> What am I missing? Thank you,
>
> 'builtin_crypto_enabled = fips' merely tells pgcrypto to expect
> failure of relevant calls. It does not cause OpenSSL to actually
> go into FIPS mode. You'd have to consult the OpenSSL docs to
> find out how to do that.

+1. You need to enable the FIPS provider in openssl.conf and make sure to
disable the legacy provider. The builtin_crypto_enabled setting simply makes
sure to never call non-FIPS certified crypto when OpenSSL is operating in fips
mode, you can also set it to 'off' and disallow non-FIPS certified crypto
regardless.

--
Daniel Gustafsson

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Joe Conway 2026-09-24 20:53:18 Re: PostgreSQL 18 FIPS mode in Windows
Previous Message Tom Lane 2026-09-24 20:13:21 Re: PostgreSQL 18 FIPS mode in Windows