문서의 이전 판입니다!
Algorithm constraints check failed on signature algorithm: SHA1withRSA
RHEL/Rocky 9 버전 이상에서 SSL관련 기능 사용시 아래와 같은 오류가 발생하는 경우가 있다.
Caused by: java.security.cert.CertificateException: Certificates do not conform to algorithm constraints at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkAlgorithmConstraints(SSLContextImpl.java:1571) at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:1496) at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1440) at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638) ... 33 more Caused by: java.security.cert.CertPathValidatorException: Algorithm constraints check failed on signature algorithm: SHA1withRSA at java.base/sun.security.provider.certpath.AlgorithmChecker.check(AlgorithmChecker.java:237) at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkAlgorithmConstraints(SSLContextImpl.java:1567) ... 36 more
이와 같은 오류가 발생하는 이유는 RHEL/Rocky 9 버전부터 자바의 기본 보안 알고리즘 정책이 바뀌어서 SHA1을 더이상 허용하지 않기 때문이다.
해결방법
OS에서 해당 알고리즘이 전역설정으로 비활성화 되어있기 때문에 해당 알고리즘을 허용하거나 예전 정책으로 변경하면 된다.
예전 정책으로 변경(LEGACY)
update-crypto-policies --set LEGACY
현재 정책에 해당 알고리즘만 추가 허용
update-crypto-policies --set DEFAULT:SHA1
이 명령어를 실행하려면 OS에 파이썬이 설치되어있어야 한다. 만약 파이썬이 없는 시스템이라면 /etc/crypto-policies/back-ends/java.config 파일의 disabledAlgorithms 목록에서 SHA1을 제거하면 동일하게 적용된다.