RHEL 9 이상(그리고 같은 계열의 Rocky · Alma · CentOS Stream 9)에서 SHA-1 로 서명된 인증서를 검증하면 invalid digest 로 실패한다. 외부 인증기관이 발급한 인증서든 사설 CA 인증서든 서명 해시가 SHA-1 이면 같다.
openssl verify -verbose -CAfile ca.crt certificate_to_verify.crt
error certificate_to_verify.crt: verification failed
[..skip..]:digital envelope routines:do_sigver_init:invalid digest:crypto/evp/m_sigver.c:333:
[..skip..]:asn1 encoding routines:ASN1_item_verify_ctx:EVP lib:crypto/asn1/a_verify.c:201:
RHEL 9 의 시스템 전역 암호 정책(crypto-policies)이 DEFAULT 이면 TLS · 인증서 서명에서 SHA-1 을 허용하지 않는다[1]. OpenSSL 3 이 이 정책을 따르므로 openssl verify 도, 그 위에서 도는 애플리케이션도 함께 거부한다.
openssl.cnf · 요청서 설정의 default_md 를 sha256 으로 두고 CA 와 서버 인증서를 다시 만든다. CA 인증서 생성 의 설정 파일은 이미 sha256 기준이다.
openssl x509 -noout -text -in certificate.crt | grep 'Signature Algorithm'
# Signature Algorithm: sha256WithRSAEncryption 이어야 한다
다시 발급할 수 없을 때만 쓴다. LEGACY 정책은 SHA-1 서명과 1024비트 RSA 를 다시 허용하므로 시스템 전체의 보안 수준이 내려간다.
update-crypto-policies --show
# DEFAULT
update-crypto-policies --set LEGACY
# 재부팅하거나 관련 서비스를 재시작해야 적용된다
정책 파일은 /usr/share/crypto-policies/back-ends 아래에 DEFAULT · FIPS · FUTURE · LEGACY 로 있다. SHA-1 만 잠시 허용하고 싶으면 DEFAULT:SHA1 서브정책을 쓸 수 있다[1:1].
update-crypto-policies --set DEFAULT:SHA1
RHEL 9 Security hardening — Using system-wide cryptographic policies. 2026-09-20 확인. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening ↩︎ ↩︎