SSL/TLS 인증서로 작업할 때 "로컬 발급자 인증서를 가져올 수 없습니다." 오류가 발생하면 특히 클라이언트와 서버 간의 보안 통신이 중단될 때 좌절감을 느낄 수 있습니다. HTTPS 요청을 시도하거나, 웹 서버를 구성하거나, 보안 웹 사이트에 액세스하려는 경우 이 오류로 인해 프로세스가 중단될 수 있습니다. 이 가이드에서는 이 문제를 해결하기 위한 원인, 일반적인 시나리오 및 단계별 해결 방법을 살펴보겠습니다.
'로컬 발급자 인증서를 얻을 수 없습니다' 오류는 무엇을 의미합니까?
"로컬 발급자 인증서를 얻을 수 없습니다" 오류는 일반적으로 누락되거나 신뢰할 수 없는 루트 또는 중간 인증서로 인해 시스템이 SSL 인증서 체인을 확인할 수 없을 때 발생합니다. SSL 인증서는 신뢰할 수 있는 인증 기관(CA)에서 발급한 루트 인증서로 시작하는 인증서의 계층 구조인 신뢰 체인을 사용합니다. 이 체인의 링크가 없거나 잘못 구성된 경우 시스템이 보안 연결을 설정할 수 없어 이 오류가 발생합니다.
오류가 발생하는 일반적인 시나리오
이 오류는 다양한 환경과 상황에서 발생할 수 있습니다. 가장 일반적인 몇 가지 시나리오를 살펴보겠습니다.
개발 환경(예: cURL, Node.js, Python)
개발 환경에서 개발자는 cURL, Node.js 또는 Python과 같은 도구를 사용하여 HTTPS 요청을 하는 경우가 많습니다. 시스템에 필요한 루트 인증서가 없으면 이러한 요청이 실패하고 "로컬 발급자 인증서를 가져올 수 없습니다" 오류가 표시될 수 있습니다. 이는 일반적으로 개발 환경이 격리되어 있거나 시스템의 CA 인증서에 액세스할 수 없는 경우에 발생합니다.
웹 브라우저
SSL 인증서 체인이 잘못 구성된 웹 사이트에 액세스하려고 하면 웹 브라우저에 이 오류가 표시될 수 있습니다. 이는 사이트에 중간 인증서가 없거나 만료된 루트 인증서를 사용하고 있기 때문일 수 있습니다. 브라우저는 보안 조치로 액세스를 차단하고 사용자에게 신뢰할 수 없는 연결을 경고합니다.
서버 구성(예: Apache, Nginx)
프로덕션 환경에서는 Apache 및 Nginx와 같은 웹 서버가 올바른 인증서 체인으로 구성되지 않은 경우 이 오류가 발생할 수 있습니다. 웹 서버에 SSL 인증서를 배포할 때 중간 인증서가 잘못 구성되거나 누락되는 것이 일반적인 원인입니다.
오류의 근본 원인
이 오류의 근본 원인을 이해하는 것은 오류를 해결하는 데 중요합니다. 이 오류가 표시되는 몇 가지 일반적인 이유는 다음과 같습니다.
- 루트 또는 중간 인증서 누락: 서버가 전체 인증서 체인을 제공할 수 없어 클라이언트가 연결을 불신하게 됩니다.
- 잘못 구성된 인증서 체인: 인증서 체인의 순서가 잘못되었거나 불완전합니다.
- 만료되었거나 신뢰할 수 없는 인증서: 루트 인증서가 만료되었거나 취소되어 인증서 체인이 손상되었을 수 있습니다.
- 오래된 CA 인증서: 로컬 시스템의 CA 인증서가 오래되었거나 신뢰할 수 있는 루트 인증서가 누락되었을 수 있습니다.
SSL 인증서 체인의 작동 방식
이 오류가 어떻게 발생하는지 더 잘 이해하려면 SSL 인증서 체인이 어떻게 작동하는지 아는 것이 중요합니다. 인증서 체인은 신뢰할 수 있는 인증 기관에서 발급한 루트 인증서로 시작됩니다. 이 루트 인증서는 중간 인증서를 확인하는 데 사용되며, 중간 인증서는 다시 서버의 인증서를 확인합니다.
이 체인의 인증서가 없거나 신뢰할 수 없는 경우 클라이언트는 서버의 인증서를 확인할 수 없어 "로컬 발급자 인증서를 가져올 수 없습니다" 오류가 발생합니다. 이 문제를 방지하려면 전체 체인이 올바르게 구성되었는지 확인하는 것이 중요합니다.
오류 해결을 위한 문제 해결 단계
이제 이 오류의 원인을 이해했으므로 해결 방법을 살펴보겠습니다. 따를 수 있는 몇 가지 단계는 다음과 같습니다.
- 인증서 체인 확인
가장 먼저 해야 할 일 중 하나는 SSL 인증서 체인을 확인하는 것입니다. OpenSSL과 같은 도구를 사용하여 체인을 검사하고 누락되거나 잘못 구성된 인증서가 있는지 확인할 수 있습니다. 예를 들어, 다음 명령을 사용하면 인증서 체인을 확인하는 데 도움이 될 수 있습니다.
세게 때리다
코드 복사
openssl s_client -connect yourdomain.com:443 -showcerts
이 명령은 서버의 인증서와 서버가 제공하는 중간 인증서를 표시합니다. 체인이 불완전하면 어떤 인증서가 누락되었는지 알 수 있습니다.
- 신뢰할 수 있는 루트 인증서 업데이트
클라이언트에 신뢰할 수 있는 루트 인증서가 없어서 오류가 발생하는 경우 시스템의 신뢰할 수 있는 루트 인증서를 업데이트하면 문제가 해결될 수 있습니다. 예를 들어 Linux에서는 다음 명령을 사용하여 CA 인증서를 업데이트할 수 있습니다.
세게 때리다
코드 복사
sudo 업데이트-ca-인증서
이 명령은 시스템에 신뢰할 수 있는 최신 루트 인증서 세트가 있는지 확인하여 문제 해결에 도움이 됩니다.
- 인증서 번들을 올바르게 구성
Apache 또는 Nginx와 같은 서버에서 SSL을 구성할 때 서버 인증서를 중간 및 루트 인증서와 연결하여 인증서 번들로 만드는 것이 중요합니다. 번들이 불완전하거나 순서가 잘못된 경우 클라이언트는 인증서 체인을 확인할 수 없어 오류가 발생합니다. 웹 서버를 설정할 때 인증서 체인을 올바르게 구성했는지 확인하세요.
플랫폼별 수정 사항
다양한 플랫폼과 도구에는 "로컬 발급자 인증서를 가져올 수 없습니다." 오류를 해결하기 위한 특정 솔루션이 필요합니다. 다음은 일반적인 개발 환경에 대한 수정 사항입니다.
- cURL
cURL에서는 --cacert 플래그를 사용하여 올바른 CA 번들을 지정하면 이 오류를 해결할 수 있는 경우가 많습니다. 최신 CA 인증서를 다운로드하여 다음과 같이 사용할 수 있습니다.
세게 때리다
코드 복사
컬 --cacert /path/to/cacert.pem https://yourdomain.com
또는 cURL이 기본적으로 사용하는 시스템의 CA 인증서를 업데이트할 수 있습니다.
- Node.js
Node.js의 경우 CA 인증서 경로를 포함하도록 NODE_EXTRA_CA_CERTS 환경 변수를 업데이트해야 할 수도 있습니다. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.
세게 때리다
코드 복사
내보내기 NODE_EXTRA_CA_CERTS="/path/to/cacert.pem"
이렇게 하면 Node.js가 HTTPS 요청을 할 때 지정된 CA 번들을 사용할 수 있습니다.
- Python 요청
Python에서는 인기 있는 요청 라이브러리가 필요한 CA 인증서를 찾을 수 없는 경우 이 오류를 트리거할 수 있습니다. 신뢰할 수 있는 루트 인증서의 최신 목록이 포함된 certifi 패키지를 설치하면 일반적으로 문제가 해결됩니다.
세게 때리다
코드 복사
pip 설치 인증서
verify 매개변수를 사용하여 코드에서 직접 CA 번들을 지정할 수도 있습니다.
파이썬
코드 복사
수입요청
요청.get('https://yourdomain.com', verify='/path/to/cacert.pem')
'로컬 발급자 인증서를 가져올 수 없습니다' 오류 방지
앞으로 이 오류를 방지하려면 신뢰할 수 있는 루트 인증서로 시스템을 정기적으로 업데이트해야 합니다. 배포 중에 SSL 인증서 확인을 자동화하고 도구를 사용하여 인증서 체인을 검사하면 잠재적인 문제가 프로덕션 환경에 영향을 미치기 전에 식별하는 데 도움이 될 수 있습니다. 또한 항상 필요한 모든 중간 인증서로 인증서 체인이 올바르게 구성되어 있는지 확인하십시오.
결론
"로컬 발급자 인증서를 가져올 수 없습니다" 오류는 보안 연결을 방해할 수 있지만 SSL 인증서 체인의 기본 문제를 이해하고 대상 수정 사항을 적용하면 이 문제를 효과적으로 해결할 수 있습니다. cURL 및 Node.js와 같은 개발 도구를 사용하든 프로덕션 서버를 구성하든 관계없이 이 가이드에 설명된 문제 해결 단계를 따르면 근본 원인을 식별하고 해결하는 데 도움이 됩니다. 시스템의 CA 인증서를 최신 상태로 유지하고 배포 중에 SSL 구성을 확인하면 앞으로 이 오류가 발생하는 것을 방지할 수 있습니다.
위 내용은 '로컬 발급자 인증서를 가져올 수 없습니다' 오류 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!