tls.cert.weak_sig_alg

Weak Signature Algorithm (SHA-1/MD5)

What we check

We inspect the signature algorithm used to sign the presented certificate. Certificates signed with SHA-1 or MD5 are flagged — these hash algorithms are cryptographically broken and vulnerable to collision attacks.

What this finding means

The server's certificate was signed using SHA-1 or MD5. An attacker with sufficient resources could forge a certificate with the same signature, undermining the chain of trust.

Why it matters

How to fix

  1. Check the current signature algorithm:

    openssl s_client -starttls smtp -connect mail.example.com:25 \
        -servername mail.example.com 2>/dev/null | \
        openssl x509 -noout -text | grep "Signature Algorithm"
    
  2. Request a new certificate. Any modern CA (including Let's Encrypt) will issue a SHA-256 signed certificate by default:

    certbot certonly --standalone -d mail.example.com --force-renewal
    
  3. For internally signed certificates, re-sign with SHA-256:

    openssl x509 -req -in server.csr -CA ca.pem -CAkey ca-key.pem \
        -sha256 -days 365 -out server-new.pem
    
  4. Reload and verify:

    systemctl reload postfix
    openssl s_client -starttls smtp -connect mail.example.com:25 \
        -servername mail.example.com 2>/dev/null | \
        openssl x509 -noout -text | grep "Signature Algorithm"
    

    The output should show sha256WithRSAEncryption or ecdsa-with-SHA256.

How it's graded

A weak signature algorithm carries a –10 penalty in the TLS category. See Grading Methodology for the full scoring model.

Evidence example

$ openssl s_client -starttls smtp -connect mail.example.com:25 \
    -servername mail.example.com 2>/dev/null | \
    openssl x509 -noout -text | grep "Signature Algorithm"
    Signature Algorithm: sha1WithRSAEncryption    ← weak
    Signature Algorithm: sha1WithRSAEncryption

References