linkerd / linkerd/linkerd2

linkerd-proxy UnknownIssuer for certificates with EC P-521

Open
#3,777 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/cli area/controller area/proxy area/security
Dominant language
Go
Stars
11.5k
Forks
1.4k
Avg merge
3d 22h
Merged PRs (30d)
53

Description

Bug Report

I've tried to make linkerd use certificates that are generated with EC P-521 instead of P-256 and I get this error from linkerd-proxy

ERR! [   170.832625s] linkerd2_proxy_identity::certify Received invalid ceritficate: invalid certificate: UnknownIssuer

I've used the following commands to generate the CA and Issuer:

step certificate create identity.linkerd.cluster.local ca.crt ca.key --profile root-ca --no-password --insecure --curve P-521 --kty EC

step certificate create identity.linkerd.cluster.local issuer.crt issuer.key --ca ca.crt --ca-key ca.key --profile intermediate-ca --not-after 8760h --no-password --insecure  --curve P-521 --kty EC

What am I missing here?

And installed linkerd using the following:

helm upgrade linkerd  . --set-file Identity.TrustAnchorsPEM=ca.crt  --set InstallNamespace=false --set-file Identity.Issuer.TLS.CrtPEM=issuer.crt --set-file Identity.Issuer.TLS.KeyPEM=issuer.key --set Identity.Issuer.CrtExpiry=2020-11-25T09:49:30 --install
How can it be reproduced?

Using the commands described above

Logs, error output, etc

(If the output is long, please create a gist and
paste the link here.)

linkerd check output
kubernetes-api
--------------
√ can initialize the client
√ can query the Kubernetes API

kubernetes-version
------------------
√ is running the minimum Kubernetes API version
√ is running the minimum kubectl version

linkerd-config
--------------
√ control plane Namespace exists
√ control plane ClusterRoles exist
√ control plane ClusterRoleBindings exist
√ control plane ServiceAccounts exist
√ control plane CustomResourceDefinitions exist
√ control plane MutatingWebhookConfigurations exist
√ control plane ValidatingWebhookConfigurations exist
√ control plane PodSecurityPolicies exist

linkerd-existence
-----------------
√ 'linkerd-config' config map exists
√ heartbeat ServiceAccount exist
√ control plane replica sets are ready
√ no unschedulable pods
√ controller pod is running
√ can initialize the client
√ can query the control plane API

linkerd-api
-----------
| pod/linkerd-controller-8496f79d56-sq89v container linkerd-proxy is not ready <-- stuck on this
Environment
  • Kubernetes Version: 1.13.11
  • Cluster Environment: (GKE, AKS, kops, ...) AKS
  • Host OS: Ubuntu 16
  • Linkerd version: edge-19.9.2

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the P-521 CA and issuer commands, then start at the linkerd2_proxy_identity::certify error and the Helm identity certificate settings. Determine why the proxy rejects this certificate chain; done means the proxy accepts the issuer and linkerd check no longer reports the linkerd-controller proxy as not ready.

Written by the indexing model from the issue text.

Assessment

Tech stack
kubernetes, rust
Domain
authentication, security
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.