Is your feature request related to a problem? Please describe.
I'm using Pomerium as a reverse proxy to my DNS over HTTPS server. Depending on the client implementation, the client trying to check certificate status over OCSP may result in deadlock (this is mentioned in the RFC https://tools.ietf.org/html/rfc8484#section-10).
OCSP stapling is considered the solution here.
Describe the solution you'd like
Pomerium should add OCSP stapling response by default.
Describe alternatives you've considered
Use Nginx between user and Pomerium as reverse proxy.
Explain any additional use-cases
I believe this is also good for user privacy. OCSP must respond in plaintext HTTP and thus ISP can learn what website you are accessing. This is mentioned in Chromium's Security FAQ: https://dev.chromium.org/Home/chromium-security/security-faq#TOC-What-s-the-story-with-certificate-revocation-
Additional context
https://github.com/mholt/certmagic/blob/master/ocsp.go is an existing implementation of OCSP stapling which relies on golang.org/x/crypto/ocsp.
This is very much still on my mind and recently came up in the recent Kubernetes Security Review.pdf.
@yegle is this something you would be interesting in adding?
Oh sorry, didn't notice there's a question to me.
Yes I'm interested in implementing this feature. Let me take this bug.
Awesome, thanks @yegle !
I have an implementation in https://github.com/yegle/pomerium/tree/ocsp that actually works, feedback welcome.
Note the approach is very naive and I need to read the RFC to:
Open questions:
@yegle this is a great start, thank you!
I need to be better informed on the subject before weighing in but I have a few hot-takes that hopefully help.
Additional context (and reading for me!)
Hi @yegle just wanted to check in on this to make sure I'm holding you up in anyway. Cheers!
Hi sorry for the delay, I'm still on this and has being keeping my patch in sync with master.