From b72f452d6fef4115d0f60615201359987ec40ae7 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Thu, 3 Dec 2015 22:29:06 +0100 Subject: Postfix TLS policy: Store the fingerprint of the cert's pubkey, not of the cert itself. --- roles/IMAP/templates/etc/postfix/relay_clientcerts.j2 | 2 +- roles/common/templates/etc/postfix/tls_policy.j2 | 6 +++--- roles/lists/templates/etc/postfix/relay_clientcerts.j2 | 2 +- roles/out/templates/etc/postfix/relay_clientcerts.j2 | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/roles/IMAP/templates/etc/postfix/relay_clientcerts.j2 b/roles/IMAP/templates/etc/postfix/relay_clientcerts.j2 index 42a83b5..eebaffb 100644 --- a/roles/IMAP/templates/etc/postfix/relay_clientcerts.j2 +++ b/roles/IMAP/templates/etc/postfix/relay_clientcerts.j2 @@ -2,5 +2,5 @@ # /!\ WARNING: smtp_tls_fingerprint_digest MUST be sha256! {% for h in groups.MX | difference([inventory_hostname]) | sort %} -{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} {{ h }} +{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {{ h }} {% endfor %} diff --git a/roles/common/templates/etc/postfix/tls_policy.j2 b/roles/common/templates/etc/postfix/tls_policy.j2 index 352ef3e..5330d11 100644 --- a/roles/common/templates/etc/postfix/tls_policy.j2 +++ b/roles/common/templates/etc/postfix/tls_policy.j2 @@ -4,7 +4,7 @@ {% if 'out' not in group_names %} [outgoing.fripost.org]:{{ postfix_instance.out.port }} fingerprint ciphers=high protocols=!SSLv2:!SSLv3:!TLSv1:!TLSv1.1 {% for h in groups.out | sort %} - match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} + match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {% endfor %} {% endif %} @@ -12,14 +12,14 @@ {% if 'IMAP' not in group_names %} [mda.fripost.org]:{{ postfix_instance.IMAP.port }} fingerprint ciphers=high protocols=!SSLv2:!SSLv3:!TLSv1:!TLSv1.1 {% for h in groups.IMAP | sort %} - match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} + match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {% endfor %} {% endif %} {% if 'lists' not in group_names %} [lists.fripost.org]:{{ postfix_instance.lists.port }} fingerprint ciphers=high protocols=!SSLv2:!SSLv3:!TLSv1:!TLSv1.1 {% for h in groups.lists | sort %} - match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} + match={{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {% endfor %} {% endif %} {% endif %} diff --git a/roles/lists/templates/etc/postfix/relay_clientcerts.j2 b/roles/lists/templates/etc/postfix/relay_clientcerts.j2 index 42a83b5..eebaffb 100644 --- a/roles/lists/templates/etc/postfix/relay_clientcerts.j2 +++ b/roles/lists/templates/etc/postfix/relay_clientcerts.j2 @@ -2,5 +2,5 @@ # /!\ WARNING: smtp_tls_fingerprint_digest MUST be sha256! {% for h in groups.MX | difference([inventory_hostname]) | sort %} -{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} {{ h }} +{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {{ h }} {% endfor %} diff --git a/roles/out/templates/etc/postfix/relay_clientcerts.j2 b/roles/out/templates/etc/postfix/relay_clientcerts.j2 index d70432e..2ff5be9 100644 --- a/roles/out/templates/etc/postfix/relay_clientcerts.j2 +++ b/roles/out/templates/etc/postfix/relay_clientcerts.j2 @@ -2,5 +2,5 @@ # /!\ WARNING: smtp_tls_fingerprint_digest MUST be sha256! {% for h in groups.all | difference([inventory_hostname]) | sort %} -{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -fingerprint -sha256 | cut -d= -f2') }} {{ h }} +{{ lookup('pipe', 'openssl x509 -in certs/postfix/'+h+'.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256 -c | sed "s/[^ =]*=\s*//"') }} {{ h }} {% endfor %} -- cgit v1.2.3