목차

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을 제거하면 동일하게 적용된다.

이후 시스템을 리부팅 하여야 적용된다.

참조링크