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

Feature Request: Mutual TLS with ACM PCA-managed Certificates #258

Closed
bigdefect opened this issue Sep 17, 2020 · 11 comments
Closed

Feature Request: Mutual TLS with ACM PCA-managed Certificates #258

bigdefect opened this issue Sep 17, 2020 · 11 comments
Assignees
Labels
App Mesh enhancement Roadmap: Awaiting Customer Feedback We need to get more information in order understand how we will implement this feature.

Comments

@bigdefect
Copy link
Contributor

bigdefect commented Sep 17, 2020

If you want to see App Mesh implement this idea, please upvote with a 👍.

Tell us about your request
Today App Mesh has support for retrieving server/upstream certificates and trust bundles for downstreams/clients from ACM Private Certificate Authority. The initial release of Mutual TLS support (#34) will enable retrieving TLS materials from the file system or an SDS provider.

We can provide parity for supporting ACM PCA for client certificates and server trust bundles.

Which integration(s) is this request for?
All

Are you currently working around this issue?
Certificates and trust bundles from ACM PCA could be exported to the file system. SPIRE supports using an ACM PCA as an upstream root to sign its subordinate CA certificates.

@jamsajones jamsajones added App Mesh Phase: To Be Prioritized enhancement EKS Amazon Elastic Container Service for Kubernetes and removed EKS Amazon Elastic Container Service for Kubernetes labels Sep 23, 2020
@herrhound herrhound added Roadmap: Awaiting Customer Feedback We need to get more information in order understand how we will implement this feature. and removed Phase: To Be Prioritized labels Apr 30, 2021
@sermilrod
Copy link

sermilrod commented May 4, 2021

This is our main showstopper when trying to adopt App Mesh, since all our services communicate using mTLS. It has been opened for a long time. Any updates or new developments in this front?

@herrhound
Copy link
Contributor

@sermilrod -- today, you can use certificates from ACM PCA to establish mutual TLS with App Mesh-managed services. However, they have to be distributed to Envoys manually, via file system, or via Envoy's SDS API. For customers using K8s, we have an integration with SPIRE: https://aws.amazon.com/blogs/containers/using-mtls-with-spiffe-spire-in-app-mesh-on-eks/

We are planning to build a better integration with ACM PCA for mTLS, similar to what we have for TLS use cases. However, there are some blockers that are being actively worked on by the ACM PCA team. I don't have an exact timeline, unfortunately.

What is the orchestrator that you're using, and how often do you rotate certificates for your mTLS workloads?

@sermilrod
Copy link

sermilrod commented May 5, 2021 via email

@herrhound
Copy link
Contributor

Hi Sergio @sermilrod,

We are working on a reference architecture for enabling mTLS with App Mesh on ECS / Fargate, targeting mid-June. In essence, we'll provide a custom CFN resource that mounts EFS, implements the CA and creates signed certs for the services in the EFS, and then the services will mount different access points to get their own certs mounted to the Envoy proxy container. It will include the automatic certificate renewals as well.

Speaking of the use case that you've outlined with a certificate exported from ACM, I believe it won't work. ACM does not allow you to export the key material along with the cert so you can't make it work with Envoy. You can export a certificate from ACM Private Certificate Authority for that use case.

@sermilrod
Copy link

Hi @herrhound thanks for timelines, I really appreciate it.

I just found it's been a long time since envoy supports encrypted private keys with passphrases https://github.com/envoyproxy/envoy/pull/5175/files but the virtual node API does not allow you to pass that in. It only exposes certificate_chain and private_key. Is there a way to customise the envoy config to pass that config in the short term?

Thanks a lot in advance

@ulziibay
Copy link

ulziibay commented Jun 22, 2021

@sermilrod were you able to find a workaround to this issue of using passphrase-protected private keys in the envoy proxy?

I imagine I can generate the certificate materials using openssl like in the walkthrough and import it to ACM as well as put it into the proxy container via local file system, when I cannot directly use the certs exported from ACM for the proxy mTLS. Is that recommended @herrhound ?

@sermilrod
Copy link

@sermilrod were you able to find a workaround to this issue of using passphrase-protected private keys in the envoy proxy?

I imagine I can generate the certificate materials using openssl like in the walkthrough and import it to ACM as well as put it into the proxy container via local file system, when I cannot directly use the certs exported from ACM for the proxy mTLS. Is that recommended @herrhound ?

We ended up writing a lambda to react to ECS events and issue certificates on-demand. In addition we had to add an init container to feed envoy with the certificates created before it can start.

This is effectively a serverless Private CA solution and it is far from ideal. We do expect AWS to provide an out-of-the-box solution as this makes App Mesh hard to adopt. @herrhound any updates from this feature ? Could you provide more accurate timelines?

@RafalMaleska
Copy link

We are using ACM for TLS with AppMesh but our security guidelines require mTLS.
A workaround with additional init containers/lambda and ecs events is not possible in our case.

Will the Issue be listed on the RoadMap?

@RafalMaleska
Copy link

Found this: https://aws.amazon.com/blogs/security/how-to-use-acm-private-ca-for-enabling-mtls-in-aws-app-mesh/

This allows the usage of mTLS in K8S but it's making the usage of AppMesh far more complex. Therefore it would benefit to push this issue onto the Roadmap.

@jlambert121
Copy link

As a customer and someone wanting this feature, is there feedback I can provide to see about getting this on the roadmap?

@bigdefect
Copy link
Contributor Author

@jlambert121 I'm no longer on App Mesh, but I can try to answer. If you're part of a business and have a technical account manager with AWS, that's a great way to funnel input to the service teams. That being said, the activity here is a good signal, even just the +1's to the top level comment help rank feature interest.

@bigdefect bigdefect closed this as not planned Won't fix, can't repro, duplicate, stale Sep 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
App Mesh enhancement Roadmap: Awaiting Customer Feedback We need to get more information in order understand how we will implement this feature.
Projects
None yet
Development

No branches or pull requests

7 participants