OpenSSL에서 '로컬 발급자 인증서를 얻을 수 없습니다'라는 메시지가 계속 표시됩니다.

OpenSSL에서 '로컬 발급자 인증서를 얻을 수 없습니다'라는 메시지가 계속 표시됩니다.

저는 OpenSSL 1.0.2k-fips가 설치된 CentOS를 사용하고 있으며 여기에 설명된 HTTP2 설치의 일부로 버전 1.1.0g를 빌드하고 설치했습니다.https://www.tunetheweb.com/performance/http2/

1.1.0g 벌금을 사용하고 있었는데 최근에 인증서를 갱신했는데 지금은 CA를 확인하려고 하면 없어진 것 같습니다. CA 파일의 위치는 변경되지 않았습니다. 1.0.2k-fips 버전은 괜찮아 보이지만 1.1.0g에서는 불평을 지나치지 않습니다.

Verify return code: 20 (unable to get local issuer certificate)

따라서 인증서가 양호하고 위치가 변경되지 않았으며 구성을 수동으로 변경하지 않았음을 확인했습니다.

나는 1.1.0g를 다시 빌드해야 한다고 생각했지만, 아무것도 바뀌지 않았습니다. 또한 다음과 같이 명령 -CApath에 대한 옵션을 사용해 보았습니다 openssl(1.0.2k-fips에서 사용하는 것과 동일한 디렉토리 사용).

echo | /usr/local/ssl/bin/openssl s_client -connect example.com:443 -CApath /etc/pki/tls

나는 또한 내가 알고 있는 올바른 인증서(1.0.2k-fips가 문제 없이 인증서를 사용함) -CAfile를 직접 가리키도록 시도했지만 여전히 변경 사항이 없습니다.ca-bundle.crt

왜 내 인증서를 선택하지 않는지 잘 모르겠고, 인증서를 변경하기 전에 이 문제가 이미 존재했는지 궁금합니다. (변경한 후에 제대로 작동하는지 확인했는데, 1.1.0g가 이미 손상되었을 수도 있습니다. 그 점).

시스템에서 수행된 업데이트로 인해 일부 링크나 파일이 끊어졌을 수 있다고 생각합니다. 그러나 인증서 내용이 모두 정상적으로 보이는 경우 어디에서 확인할 수 있습니까? 아니면 1.1.0g에 지적해야 할 다른/추가 인증서가 누락되어 있습니까?

답변1

다음을 사용하여 s_client를 통해 인증서 체인을 표시할 수 있습니다 -showcerts.

openssl s_client -connect example.com:443 -showcerts </dev/null

이는 인증서 체인으로 시작한 다음 서버 인증서 및 TLS 연결에 대한 기타 정보를 표시합니다. 이 모든 것이 문제가 있는 곳을 파악하는 데 도움이 될 것입니다. CA가 아닌 중간 인증서에 있을 수도 있습니다.

출력을 필터링하여 인증서 체인에 대한 빠른 요약을 얻을 수 있습니다.

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null |
sed -e '1,/Certificate chain/d' -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/d' -e '/---/,$d'

관련 정보