Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for SCEP Polling #1502

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

adrian-alexander
Copy link

Description:

This pull request adds SCEP polling mode which can be configured via ca.json. When enabled, the CA will return a PENDING response which will cause the client to poll the CA server. Fixes #1170 .

Two new databases have been created named x509_csr and x509_certs_csr to save the certificate requests that have been signed.

@CLAassistant
Copy link

CLAassistant commented Aug 4, 2023

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ adrian-alexander
❌ Adrian Alexander


Adrian Alexander 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.

@github-actions github-actions bot added the needs triage Waiting for discussion / prioritization by team label Aug 4, 2023
@adrian-alexander adrian-alexander changed the title Initial support for SCEP Polling Support for SCEP Polling Aug 4, 2023
@hslatman
Copy link
Member

hslatman commented Aug 4, 2023

Hey @adrian-alexander,

Thank you for this contribution. I'll have a look at it. We'll also discuss it in our next open source triage meeting.

Do you have a specific use case for which you need CertPoll support? Or maybe some specific SCEP client that requires it? So far our certificate signing operations have been synchronous, in-line with the HTTP request, meaning that we always just sent SUCCESS or FAILURE immediately. This works because the signed certificate is either available, or not, because the signing operation doesn't happen asynchronously / in the background.

@adrian-alexander
Copy link
Author

Hey @adrian-alexander,

Thank you for this contribution. I'll have a look at it. We'll also discuss it in our next open source triage meeting.

Do you have a specific use case for which you need CertPoll support? Or maybe some specific SCEP client that requires it? So far our certificate signing operations have been synchronous, in-line with the HTTP request, meaning that we always just sent SUCCESS or FAILURE immediately. This works because the signed certificate is either available, or not, because the signing operation doesn't happen asynchronously / in the background.

Hey @hslatman,

My team has been looking for a CA with SCEP polling to replace our in-house CA. Our use case is untrusted networks and deployments. We need an admin to manually approve cert requests from technicians at the sites.

@hslatman
Copy link
Member

hslatman commented Aug 4, 2023

Sounds like a legit use case 🙂

I haven't looked into the code in detail yet, but from a quick skim I don't see changes to how the auth.SignCSR (or equivalent) method is called, especially in regards to asynchronously signing the certificate. For your use case, there's a need to provide some way to manually approve the CSR that you stored in the table, and then turn it into a certificate, storing that state in the the table too. What do you expect that integration/workflow to work/look like?

Since you referred to #1170, I guess you're aware of the fact that we have support for (manual) approval workflows in our product. Ideally the flow you contributed here would have to be interoperable with that part of our stack. Besides that, it might be an option to provide another method. One way could be to make it work with webhooks.

Are you open to talk more about your use case with a colleague of mine?

@adrian-alexander
Copy link
Author

What do you expect that integration/workflow work/look like?

For testing, I used sscep to send the request to the CA. While it was polling, I signed the request with step ca sign, which signs the CSR as well as adds the certificate and the matching CSR to the database. I went with this route so whether the CSR were signed with the basic-client or through the CLI, the certificate and CSR would still get added to the database.

Are you open to talk more about your use case with a colleague of mine?

I'm actually part of the same team as the guy in #1170 . What he discussed in his meeting with you is the same thing as my use case 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs triage Waiting for discussion / prioritization by team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Does step-ca support SCEP manual mode?
3 participants