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
{{ message }}
Repository navigation
S3 upload fails after enabling FIPS in OpenSSL #3198
Openssl in fips mode does not support MD5 and CPP SDK enabled content-md5 calculation by default on puts. You can consider using one of the additional checksums (crc32, crc32c, sha1, sha256), which will prevent sdk from generating md5.
Im guessing the reason it was crashing with stripped openssl was due to md5 symbol being stripped out completely and cpp sdk relying on it.
Which suggests that somewhere in this SDK or its dependencies it's using the legacy OpenSSL functions to generate MD5. I used the newer ones to implement this on the app side so there's no problem with MD5 in FIPS.
I am assuming you are referring to openssl 3 md5 interface, which allows you to jump through some hoops to reenable md5 in fips mode. CPP SDK targets openssl 1.1.1 as a more common ground for crypto and we dont have too much openssl version specific code. In general, afaik using md5 in any way breaks your fips compliance and it is not something we would want to support in sdk. But we should probably tweak the messaging here to make it more clear whats failing.
this code os been influenced by the main circuit file format. also remember to contribute this repository in prior file importance.but its not supported.
The below fatal error is observed with latest version 1.11.530 on RHEL 9 FIPS enabled environment
s2n_init() failed: 469762137 (FIPS mode is not supported for the libcrypto)
Fatal error condition occurred in /home/user/s3demo/.build/third_party/aws/src/aws_sdk_cpp/crt/aws-crt-cpp/crt/aws-c-io/source/s2n/s2n_tls_channel_handler.c:233: 0 && "s2n_init() failed"
for both read and upload s3 object.
Note: The same code is working when FIPS disabled.
The below fatal error is observed with latest version 1.11.530 on RHEL 9 FIPS enabled environment
s2n_init() failed: 469762137 (FIPS mode is not supported for the libcrypto)
Fatal error condition occurred in /home/user/s3demo/.build/third_party/aws/src/aws_sdk_cpp/crt/aws-crt-cpp/crt/aws-c-io/source/s2n/s2n_tls_channel_handler.c:233: 0 && "s2n_init() failed"
for both read and upload s3 object.
Note: The same code is working when FIPS disabled.
Hi, I had the same issue and I found that the root cause for me was that the s2n-tls library (which is used as a submodule in AWS SDK) only allows OpenSSL version 3.0 to be used if FIPS is enabled, anything above 3.1 fails. The latest release of AWS SDK uses version 1.5.13 of s2n-tls, but fortunately this restriction is lifted and FIPS support for OpenSSL is added in the latest 1.5.15 version of s2n-tls as written in the release notes: https://github.com/aws/s2n-tls/releases/tag/v1.5.15
@DmitriyMusatkin Thanks it is working with 1.11.537, not more aborting/crashing.
When content md5 is enabled explicitly for upload object, it returning error message Unable to parse ExceptionName: InvalidDigest Message: The Content-MD5 you specified was invalid which is quite irrelevant on the FIPS enabled env.
The s2n_init() failed (FIPS mode is not supported) crash was fixed by the s2n-tls upgrade in 1.11.536+ (confirmed working on 1.11.537 above).
The original default Content-MD5 failure is also answered:
Openssl in fips mode does not support MD5 and CPP SDK enabled content-md5 calculation by default on puts. You can consider using one of the additional checksums (crc32, crc32c, sha1, sha256), which will prevent sdk from generating md5.
Closing as resolved. Feel free to reopen the issue if needed.
This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.
Activity
DmitriyMusatkin commentedon Nov 18, 2024
Openssl in fips mode does not support MD5 and CPP SDK enabled content-md5 calculation by default on puts. You can consider using one of the additional checksums (crc32, crc32c, sha1, sha256), which will prevent sdk from generating md5.
Im guessing the reason it was crashing with stripped openssl was due to md5 symbol being stripped out completely and cpp sdk relying on it.
parsley72 commentedon Nov 18, 2024
Which suggests that somewhere in this SDK or its dependencies it's using the legacy OpenSSL functions to generate MD5. I used the newer ones to implement this on the app side so there's no problem with MD5 in FIPS.
DmitriyMusatkin commentedon Nov 18, 2024
I am assuming you are referring to openssl 3 md5 interface, which allows you to jump through some hoops to reenable md5 in fips mode. CPP SDK targets openssl 1.1.1 as a more common ground for crypto and we dont have too much openssl version specific code. In general, afaik using md5 in any way breaks your fips compliance and it is not something we would want to support in sdk. But we should probably tweak the messaging here to make it more clear whats failing.
amberkushwaha commentedon Dec 11, 2024
this code os been influenced by the main circuit file format. also remember to contribute this repository in prior file importance.but its not supported.
csi-amolpawar commentedon Mar 21, 2025
The below fatal error is observed with latest version 1.11.530 on RHEL 9 FIPS enabled environment
for both read and upload s3 object.
Note: The same code is working when FIPS disabled.
lordgamez commentedon Mar 24, 2025
Hi, I had the same issue and I found that the root cause for me was that the s2n-tls library (which is used as a submodule in AWS SDK) only allows OpenSSL version 3.0 to be used if FIPS is enabled, anything above 3.1 fails. The latest release of AWS SDK uses version 1.5.13 of s2n-tls, but fortunately this restriction is lifted and FIPS support for OpenSSL is added in the latest 1.5.15 version of s2n-tls as written in the release notes: https://github.com/aws/s2n-tls/releases/tag/v1.5.15
You can also check the last commit which removes the mentioned restriction: https://github.com/aws/s2n-tls/pull/5191/files
After upgrading the submodule to v1.5.15 the issue was solved. I was using OpenSSL 3.3.2 with the separate FIPS validated 3.0.9 version FIPS provider.
csi-amolpawar commentedon Mar 25, 2025
@lordgamez Thank you for info. will check it and update here. thanks
DmitriyMusatkin commentedon Mar 31, 2025
1.11.536 and up include the latest s2n
csi-amolpawar commentedon Apr 1, 2025
@DmitriyMusatkin Thanks it is working with 1.11.537, not more aborting/crashing.
When content md5 is enabled explicitly for upload object, it returning error message
Unable to parse ExceptionName: InvalidDigest Message: The Content-MD5 you specified was invalidwhich is quite irrelevant on the FIPS enabled env.m_request.SetContentMD5(hash::Base64Encode(hash::CalculateMD5(*data)))kai-ion commentedon Aug 13, 2026
Both problems in this thread are resolved:
s2n_init() failed (FIPS mode is not supported)crash was fixed by the s2n-tls upgrade in 1.11.536+ (confirmed working on 1.11.537 above).Closing as resolved. Feel free to reopen the issue if needed.
github-actions commentedon Aug 13, 2026
This issue is now closed. Comments on closed issues are hard for our team to see.
If you need more assistance, please open a new issue that references this one.