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
- Known vulnerabilities. SHA-1 collision attacks are practical (the SHAttered attack demonstrated this in 2017). MD5 collisions have been feasible since 2004. A forged certificate would be indistinguishable from the real one.
- Industry deprecation. Major CAs stopped issuing SHA-1 certificates in 2016. Browsers rejected them by 2017. Certificate authorities and trust stores are phasing them out entirely.
- Remediation is straightforward. Modern CAs issue SHA-256 signed certificates by default — replacing the certificate is usually all it takes.
How to fix
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"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-renewalFor 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.pemReload 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
sha256WithRSAEncryptionorecdsa-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