On Tue, Jun 02, 2015 at 11:17:55AM +0200, Per Thorsheim wrote:

> Quite a bit of useful info at sys4.de, but in German. Found this english
> translation as a rather quick guide for parts of the process:
> http://noflex.org/implementing-dnssec-dane-email-step-step/

A few comments:

1.  Key generation:

    Original:

        mkdir -p /etc/postfix/ssl
        cd /etc/postfix/ssl                         
        openssl req -new -newkey rsa:1024 -days 9999 -nodes -x509 -keyout 
server.pem -out server.pem     
        postconf -e "smtpd_tls_security_level = may"
        postconf -e "smtpd_tls_key_file = /etc/postfix/ssl/server.pem"
        postconf -e "smtpd_tls_cert_file = /etc/postfix/ssl/server.pem"

    Better, set the umask to 077 to protect the private key, and use a 2048-bit 
RSA key.
    Avoid potential problems with using the same file as both the key and cert 
output file:

        umask 077
        mkdir -p /etc/postfix/ssl
        cd /etc/postfix/ssl                         
        openssl req -new -newkey rsa:2048 -days 7305 -nodes -x509 -keyout 
/dev/stdout >> server.pem     
        postconf -e "smtpd_tls_cert_file = /etc/postfix/ssl/server.pem"
        postconf -e "smtpd_tls_key_file = /etc/postfix/ssl/server.pem"
        postconf -e "smtpd_tls_security_level = may"

2.  Correction:

    Original:

        in this state, a sending server can encrypt the transmission,
        but it can not verify the self-signed server certificate, so
        it  will treat the TLS connection as anonymous:

        postfix/smtp[13330]: Anonymous TLS connection established to
        mail.example.com[...]:25:  TLSv1.2 with cipher AECDH-AES256-SHA 
(256/256 bits)

    The reason you see "anonymous" is not because unverified peers
    are treated as "anonymous", but rather because in fact an anonymous
    ciphersuite is negotiated, and no certificate is sent by the server.
    This happens when TLS is opportunistic (security level "may") and
    both sides support anonymous ciphers.

3.  TLSA record generation:

    Original:

        # openssl x509 -in /etc/postfix/ssl/server.pem -outform DER  | openssl 
sha256
        (stdin)= 
02059728e52f9a58a235584e1ed70bd2b51a44024452ec2ba0166e8fb1d1d32b

    Better, the recommended TLSA record parameters are "DANE-EE(3)
    SPKI(1) SHA2-256(1)" or simply "3 1 1".  This means that the
    record publishes a digest of the public key along, not the
    containing certificate.  Therefore, the right command to extract
    the digest is:

        # openssl x509 -in /etc/postfix/ssl/server.pem -noout -pubkey |
            openssl pkey -pubin -outform DER |
            openssl dgst -sha256 -binary |
            hexdump -ve '/1 "%02X"

    Correspondingly, the TLSA record should be "3 1 1" not "3 0 1"
    as mentioned before.

    The www.tlsa.info site has been superseded by "https://dane.sys4.de";

4.  Stress more strongly the need for a VALIDATING LOCAL resolver on
    a sending Postfix system that supports DANE.

        /etc/resolv.conf:
            ; DO NOT list remote nameservers
            nameserver 127.0.0.1

    Deploy unbound or BIND with suitable trust-anchor material for
    the root zone AND automated updates to keep these up to date
    when the root keys are rotated some day.

-- 
        Viktor.

Reply via email to