Skip to content

Commit eac14ef

Browse files
committed
Use OpenSSL "legacy" provider in "Check Certificates" for compatibility w/ RC2-40-CBC encrypted PKS#12
The "Check Certificates" GitHub Actions workflow template uses OpenSSL to check for problems with the project's signing certificates. Certificates exported to PKS #12 archive files using older tools may have been encrypted using the "RC2-40-CBC" algorithm. Due to the availability of more secure modern alternatives, default support for RC2-40-CBC encryption was dropped in OpenSSL 3.x. The macOS signing certificate currently used by Arduino uses this RC2-40-CBC encryption. The "Check Certificates" GitHub Actions workflow runs on the `ubuntu-latest` runner. Previously, this runner used Ubuntu 20.04. This has now changed to Ubuntu 22.04. With the operating system update came an OpenSSL update from 1.1.1f to 3.0.2. This caused the workflow runs to fail on the macOS certificate job: Error outputting keys and certificates 80FBB0C5087F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties () Even though no longer done by default, OpenSSL still supports RC2-40-CBC encryption via its "legacy" provider. So compatibility with the certificate is restored by adding the `-legacy` flag to the `openssl pkcs12` commands.
1 parent e495172 commit eac14ef

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

workflow-templates/check-certificates.yml

+4-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ jobs:
9595
(
9696
openssl pkcs12 \
9797
-in "${{ env.CERTIFICATE_PATH }}" \
98-
-noout -passin env:CERTIFICATE_PASSWORD
98+
-legacy \
99+
-noout \
100+
-passin env:CERTIFICATE_PASSWORD
99101
) || (
100102
echo "::error::Verification of ${{ matrix.certificate.identifier }} failed!!!"
101103
exit 1
@@ -123,6 +125,7 @@ jobs:
123125
openssl pkcs12 \
124126
-in "${{ env.CERTIFICATE_PATH }}" \
125127
-clcerts \
128+
-legacy \
126129
-nodes \
127130
-passin env:CERTIFICATE_PASSWORD
128131
) | (

0 commit comments

Comments
 (0)