How to protect from bootstrap? #787
-
Hi! I'm new to step ca, but I'm having some problem trying to understand the bootstrap option. According to this, bootstrap allows me to connect and command my certification authority remotely by using the bootstrap option and according to this video I can even get tokens throught that. However, here is the problem: to allow my clients to stablish an SSL connection with the CA, I need to provide to them the root certificate, but, if they have the root certificate, could'nt they get the fingerprint from the certificate and bootstrap into my CA, allowing them to get tokens without any control? If yes, how can I counter that? Is there anyway to disable the bootstrap option, or to oblige an password upon anyone trying to use it? If no, does that mean that I should'nt use step ca on an public IP? OBS: I'm planning to use an gmail bot as a authentication mechanism |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
Hi @Daniel-online, by default all the endpoints are public, that does not mean that they are accessible by everyone. The /provisioners endpoint is probably the most sensible one because you can see the configuration of a CA. The information in that endpoint should be safe, meaning that only "public" information should be displayed. There's a minor exception though, on an OIDC provisioner you can see the clientSecret. But that is generally ok, as it should be your IdP the one restricting the login to only clients in your organization. If that's not the case you can always use the property If you're using a JWK provisioner, the private key is always encrypted, so only the people that know the password to decrypt it can use it. You can even remove it from the ca.json, but you need to provide another way to sign tokens.
To summarize, yes, by default all endpoints are public, but only users that can generate a valid token can get a certificate. And each provisioner has at least a way to limit access to things belonging to your organization, so only they can generate valid tokens. And there are always other ways to protect the CA, using firewalls or proxies are probably the most typical. A non-trivial one would be to use TLS-over-mTLS, but I would not recommend you to go through that route unless it's critical. You can always have multiple CAs on internal networks to give certificates to multiple hosts using multiple intermediate certificates. Or using VPNs, ...
I guess you mean to use OIDC with a google account, if you have a custom domain If you don't have a way to limit the users, then you should use a different provisioner. |
Beta Was this translation helpful? Give feedback.
Hi @Daniel-online, by default all the endpoints are public, that does not mean that they are accessible by everyone. The /provisioners endpoint is probably the most sensible one because you can see the configuration of a CA.
The information in that endpoint should be safe, meaning that only "public" information should be displayed. There's a minor exception though, on an OIDC provisioner you can see the clientSecret. But that is generally ok, as it should be your IdP the one restricting the login to only clients in your organization. If that's not the case you can always use the property
"domains"
to control it.If you're using a JWK provisioner, the private key is always encrypted, so on…