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

[EPIC]: HTTPS and Certificate Handling in Kestrel #21512

Closed
9 of 14 tasks
davidfowl opened this issue May 5, 2020 · 8 comments
Closed
9 of 14 tasks

[EPIC]: HTTPS and Certificate Handling in Kestrel #21512

davidfowl opened this issue May 5, 2020 · 8 comments
Assignees
Labels
area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions Epic Groups multiple user stories. Can be grouped under a theme.
Milestone

Comments

@davidfowl
Copy link
Member

davidfowl commented May 5, 2020

This epic tracks all the work required in Kestrel to improve certificate management.

@davidfowl davidfowl added area-servers Epic Groups multiple user stories. Can be grouped under a theme. labels May 5, 2020
@davidfowl davidfowl added this to the 5.0.0 milestone May 5, 2020
@davidfowl
Copy link
Member Author

davidfowl commented May 5, 2020

cc @wfurt @karelz @bartonjs @vcsjones

@davidfowl davidfowl self-assigned this May 5, 2020
@blowdart
Copy link
Contributor

blowdart commented May 5, 2020

Do you want to add caching of certificate validation for certificate auth? #12324

@davidfowl
Copy link
Member Author

Yea let me add that

@blowdart
Copy link
Contributor

I added it because you didn't :p

@blowdart
Copy link
Contributor

HItY

@webprofusion-chrisc
Copy link

I don't know if it's already tracked (or considered out of scope) but a common pattern for certificate use is to fetch them from a broker such as a central cert service or secrets store (using any method - http api, ACME etc - but this may be a very long async wait) then re-fetch and re-apply them as expiry looms. The local X509Store (if any) may just be considered a local cache.

It would be ideal if a standard interface for cert request & renewal could be provided (with custom providers for specific scenarios/implementations).

All domain/host certs have expiry (which can be hours away or weeks away, but will happen during app uptime), users may wish to start to request renewal after a fixed time period e.g. every 30 days or a set period before cert expiry, e.g. 48 hrs before expiry). Initial renewal failures may be transient but repeated failures require escalation.

Fetching may fail if the client no longer has permission to request the cert for that domain or other validation has failed, therefore the service would continue to use the expiring/expired certificate and retry etc.

As a service may have multiple domain/port bindings, the state of a certificate will vary per binding (some may be closer to expiry than others, may be refreshed using other means). Certs may be issued by public CAs or internal CAs (per binding). This is somewhat related to #21300 and #20981 but not completely and is really just a question of whether this scenario should be a concern for the core framework or left entirely to third-party middleware.

@davidfowl
Copy link
Member Author

That’s pretty much why we leave policy out of the framework and push users to a callback model. That will be what we enable before doing anything more advanced. We may be able to integrate more as we get a feel for what customers do with it and if it’s common enough and difficult, we could bake something in

@jkotalik
Copy link
Contributor

jkotalik commented Oct 9, 2020

Done for 5.0

@jkotalik jkotalik closed this as completed Oct 9, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Nov 8, 2020
@amcasey amcasey added area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions and removed area-runtime labels Aug 24, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions Epic Groups multiple user stories. Can be grouped under a theme.
Projects
None yet
Development

No branches or pull requests

6 participants