Skip to content

Add CRL checks#1474

Merged
jfallows merged 12 commits into
aklivity:developfrom
bmaidics:crl_checks
Jun 18, 2025
Merged

Add CRL checks#1474
jfallows merged 12 commits into
aklivity:developfrom
bmaidics:crl_checks

Conversation

@bmaidics
Copy link
Copy Markdown
Contributor

@bmaidics bmaidics commented May 14, 2025

No description provided.

@bmaidics bmaidics marked this pull request as ready for review May 20, 2025 13:00
@bmaidics bmaidics requested a review from jfallows May 20, 2025 14:44

FileSystemStoreInfo trust = supplyStoreInfo(resolvePath, options.trust);
supplyTrust = (aliases, cacerts) -> newTrustFactory(trust, aliases, cacerts);
supplyTrust = (aliases, cacerts, crlChecks) -> newTrustFactory(trust, aliases, cacerts, crlChecks);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This forced API change suggests that the decision to enforce CRL checks might belong in the vault, not the TLS binding, what do you think?

@jfallows jfallows closed this Jun 6, 2025
@jfallows jfallows reopened this Jun 17, 2025
Copy link
Copy Markdown
Contributor

@jfallows jfallows left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need negative test coverage to verify that revoked client certificate cannot be used to successfully complete a TLS handshake.

ENGINE_CACERTS_STORE_PASS = config.property("cacerts.store.pass");
ENGINE_ERROR_REPORTER = config.property(ErrorReporter.class, "error.reporter",
EngineConfiguration::decodeErrorReporter, EngineConfiguration::defaultErrorReporter);
ENGINE_REVOCATION = config.property("revocation");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need a name with more context for clarity.

Suggested change
ENGINE_REVOCATION = config.property("revocation");
ENGINE_CERTIFICATE_REVOCATION_STRATEGY = config.property("certificate.revocation.strategy");

Suggest making this more strongly typed with an enum, say RevocationStrategy in io.aklivity.zilla.runtime.engine.security package.

public enum RevocationStrategy
{
    CRL,
    NONE
}

...and default to NONE.

We can also consider using this type (from lowercase string) in various vault options instead of string, encouraging consistency across different vault implementations.

Copy link
Copy Markdown
Contributor

@jfallows jfallows left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just need the negative IT to verify that a revoked certificate cannot be used to successfully complete TLS handshake.

Copy link
Copy Markdown
Contributor

@jfallows jfallows left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's merge this now, given that you have already verified end-to-end.

@jfallows jfallows merged commit 0d97d3a into aklivity:develop Jun 18, 2025
32 of 41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants