Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
None
-
-
Phoenix
-
1
-
Phoenix 2022-03-30, Phoenix 2022-04-13
-
smortex
-
48141
-
1
-
Enhancement
-
You can now specify an "https" URL as the "source" of a "file" resource when the TLS server requires a client certificate for authentication.
-
Needs Assessment
Description
On instantiation, a Puppet::HTTP::Client use a Puppet::SSL::Context to verify secure connections to remote hosts. The Puppet::SSL::Provider provide convenience methods to build SSL Contexts:
- create_insecure_context: An insecure SSL Context, allowing connections to any host without verification and not allowing client certificate authentication;
- create_root_context: A basic SSL Context trusting the passed certificates and that does not allow client certificate authentication;
- create_system_context: A basic SSL Context trusting system certificates but not checking CRL (because they do not exist) and not allowing client certificate authentication;
- create_context: A SSL Context suitable for communication with puppet trusting only the puppet CA, checking CRL and using client certificate authentication.
None of these SSL Context allow to download files served by a server using certificates signed by a trusted third-party (system store) but with client certificate authentication. We use this scheme to distribute files to our puppet nodes from servers which use standard TLS certificates provided by Let's Encrypt: the certificate is trusted in the system store, but we also require a client certificate signed by our Puppet CA for the client to download files (our rationale is we want to use "standard" certificates to allow access to the files with either login+password or a trusted client certificate, and the code being used by Bolt, it is convenient to rely on Puppet::HTTP::Client to download these files).
This issue is about making it possible for the base Puppet HTTP Client to generate a SSL Context suitable for this kind of usages:
- Verify remote host against system trusted CA;
- Do not enforce CRL check because there is none for the system trust store;
- Authenticate using puppet node certificate.
Attachments
Issue Links
- causes
-
PUP-11522 Allow Puppet::HTTP::Client to connect to a server requiring client cert authentication and whose server cert is issued by a CA in the 'ssl_trust_store'
-
- Resolved
-
- is duplicated by
-
PUP-11470 Need to provide client cert authentication for `include_system_store: true`
-
- Closed
-
- relates to
-
MODULES-11304 [vault] Convert to using the new HTTP API
-
- Open
-