summaryrefslogtreecommitdiff
path: root/README.markdown
diff options
context:
space:
mode:
authorMatt Bostock <matt@mattbostock.com>2015-11-23 23:45:23 +0000
committerMatt Bostock <matt@mattbostock.com>2016-01-08 11:09:45 +0000
commit97320ab42121a10b76c642b8378c82a888148e4b (patch)
treebf92502d1d5399d8e086be6b39d05552d0911168 /README.markdown
parentef0c13b1afdd5fd339083015d387d669acd67066 (diff)
Add a function to validate an x509 RSA key pair
Add a function to validate an x509 RSA certificate and key pair, as commonly used for TLS certificates. The rationale behind this is that we store our TLS certificates and private keys in Hiera YAML files, and poor indentation or formatting in the YAML file could cause a valid certificate to be considered invalid. Will cause the Puppet run to fail if: - an invalid certificate is detected - an invalid RSA key is detected - the certificate does not match the key, i.e. the certificate has not been signed by the supplied key The test certificates I've used in the spec tests were generated using the Go standard library: $ go run $GOROOT/src/crypto/tls/generate_cert.go -host localhost Example output: ==> cache-1.router: Error: Not a valid RSA key: Neither PUB key nor PRIV key:: nested asn1 error at /var/govuk/puppet/modules/nginx/manifests/config/ssl.pp:30 on node cache-1.router.dev.gov.uk
Diffstat (limited to 'README.markdown')
-rw-r--r--README.markdown16
1 files changed, 16 insertions, 0 deletions
diff --git a/README.markdown b/README.markdown
index 9ff242c..e126e5d 100644
--- a/README.markdown
+++ b/README.markdown
@@ -1182,6 +1182,22 @@ Instead, use:
*Type*: statement.
+#### `validate_x509_rsa_key_pair`
+
+Validates a PEM-formatted X.509 certificate and private key using OpenSSL.
+Verifies that the certficate's signature was created from the supplied key.
+
+Fails catalog compilation if any value fails this check.
+
+Takes two arguments, the first argument must be a X.509 certificate and the
+second must be an RSA private key:
+
+ ~~~
+ validate_x509_rsa_key_pair($cert, $key)
+ ~~~
+
+*Type*: statement.
+
#### `values`
Returns the values of a given hash. For example, given `$hash = {'a'=1, 'b'=2, 'c'=3} values($hash)` returns [1,2,3].