Add legacy SCEP compatibility options - #2776
Open
ArtWachowski wants to merge 1 commit into
Open
Conversation
|
Artur Wachowski seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
ArtWachowski
force-pushed
the
legacy-scep-signed-attributes-bug1723
branch
from
August 26, 2026 17:35
769db00 to
96c2950
Compare
ArtWachowski
force-pushed
the
legacy-scep-signed-attributes-bug1723
branch
from
August 26, 2026 18:01
96c2950 to
30385c6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Name of feature:
Opt-in legacy SCEP compatibility options for authenticated attribute verification and RSA
digestEncryptionAlgorithmencoding.Pain or issue this feature alleviates:
Some legacy SCEP clients are not fully interoperable with the default PKCS#7 behavior used by
smallstep/certificates.Two compatibility issues were identified while investigating
smallstep/certificates#1723:Some legacy clients sign PKCS#7 authenticated attributes in their original encoded order instead of DER SET order. This causes request verification to fail with
crypto/rsa: verification error.Some legacy clients expect SCEP
CertRepresponses using:rsaEncryption(1.2.840.113549.1.1.1)as the
SignerInfo.digestEncryptionAlgorithm, rather than:sha1WithRSAEncryption(1.2.840.113549.1.1.5)when SHA-1 and RSA are used.
This change exposes two independent SCEP provisioner compatibility options:
allowUnsortedAuthenticatedAttributesand
legacyRSADigestEncryptionAlgorithmBoth options are disabled by default.
Why is this important to the project (if not answered above):
This allows
step-caSCEP provisioners to interoperate with legacy SCEP implementations without changing behavior for existing deployments.The compatibility behavior is explicitly opt-in and can be enabled only for provisioners that require it.
The changes were tested successfully against a legacy SCEP client based on strongSwan 5.0.2, where certificate enrollment previously failed.
Is there documentation on how to use this feature? If so, where?
The options are configured on an SCEP provisioner, for example:
{ "allowUnsortedAuthenticatedAttributes": true, "legacyRSADigestEncryptionAlgorithm": true }allowUnsortedAuthenticatedAttributesenables compatibility when parsing and verifying incoming SCEP PKI messages.legacyRSADigestEncryptionAlgorithmcauses signed SCEPCertRepresponses to usersaEncryptionas the PKCS#7SignerInfo.digestEncryptionAlgorithm.Both options may be enabled independently.
In what environments or workflows is this feature supported?
SCEP provisioners using
step-ca.The compatibility options are intended for interoperability with legacy SCEP clients whose PKCS#7 encoding or verification expectations differ from current DER/RSA conventions.
The implementation has been tested with a legacy client based on strongSwan 5.0.2.
In what environments or workflows is this feature explicitly NOT supported (if any)?
Neither compatibility behavior is enabled globally.
Provisioners that do not explicitly configure these options retain the existing SCEP parsing, verification, and response-signing behavior.
The options are intended as targeted compatibility mechanisms rather than changes to the default SCEP behavior.
Supporting links/other PRs/issues:
Addresses the interoperability problem reported in
smallstep/certificates#1723.Related legacy SCEP interoperability discussion:
strongswan/strongswan#2753.Depends on the corresponding
smallstep/pkcs7PR providing:SignedDataencryption algorithm inAddSignerChain()Depends on the corresponding
smallstep/scepPR exposing the authenticated-attribute verification option throughParsePKIMessage.💔Thank you!