-
Steps to Reproduce
Your Environment
Expected BehaviorSSH certificate provisioning succeeds, after JWT password is entered. Actual Behavior
If you instead add
Additional ContextApologies if this issue should have been filed on smallstep/cli instead. I've set up an instance of The root issue seems to be that Best I can tell, the root is loaded at https://github.com/smallstep/cli/blob/master/utils/cautils/client.go#L49-L71, and the same ClientOption is used both for the Transport as it is for step operations. I think it should be possible to patch this to specify the ca-bundle separately. ContributingVote on this issue by adding a 👍 reaction. |
Beta Was this translation helpful? Give feedback.
Replies: 7 comments 1 reply
-
Normally For an X.509 CA, the cert renewal flows sometimes use mutual TLS. That's why we don't recommend putting it behind a layer 7 load balancer. But, this has been addressed with the new Some ways forward in the short term...
As for this issue...
|
Beta Was this translation helpful? Give feedback.
-
Thanks for the reply! I've tried the workarounds that you've listed:
from step-cli. On step-ca, I see
This appears to be the SHA-256 fingerprint of the ISRG X1 root:
which leads me to believe the observation I made before about
I could probably work around this in my environment by having the step-ca port be exposed on the internal network, and have Caddy only for external ingress. It does however occur to me that the URL printed in For the suggestions you made,
|
Beta Was this translation helpful? Give feedback.
-
Oh! You might try appending the Let's Encrypt root PEM to your Alex, if you don't mind jumping into our Discord, we could debug this in real time: https://bit.ly/step-discord |
Beta Was this translation helpful? Give feedback.
-
As requested during our chat on Discord, here's the snippet (redacted) from the Caddyfile
I haven't yet tried to make Caddy verify the step-ca certificate, so |
Beta Was this translation helpful? Give feedback.
-
Let me put here the default behavior of
Now to your use case, assuming you're running this: step ssh certificate ${FQDN} /etc/ssh/ssh_host_ecdsa_key.pub --host --sign --principal ${FQDN} --principal ${HOSTNAME} In most cases, it will get the root from 1, and it will properly get from the proxy the root because it won't check the TLS cert, but then it will fail to establish the connection because the proxy, caddy, in this case, is using a let's encrypt cert instead of a One solution is to create JWT tokens without the
With this, I'm trying to add the @achernya @tashian I haven't tested this setup, so let me know if it works. |
Beta Was this translation helpful? Give feedback.
-
Ahh, ok. @maraino @achernya I'm going to convert this issue into a discussion so we can have the notes for posterity. |
Beta Was this translation helpful? Give feedback.
-
Hello @maraino, @tashian! I just tested this by putting
in ca.json and running the aforementioned
Which appears to work! |
Beta Was this translation helpful? Give feedback.
Let me put here the default behavior of
step
. The cli uses different ways to load its own root certificate, this is the list by priority:"sha"
with the fingerprint of the root certificate, if present,step
will use an "insecure" connection to get the root fromstep-ca
(/root/<fingerprint>
), and after verifying the fingerprint, it will create a secure connection with that root.--root
$(step path)/defaults.json
Now to your use case, assuming you're running this:
step ssh certificate ${FQDN} /etc/ssh/ssh_host_ecdsa_key.pub --host --sign --principal ${F…