최근에 서버를 8.04에서 10.04로 업그레이드했으며 모든 소프트웨어와 함께 서버를 업그레이드했습니다.
온라인에서 찾은 결과, 새로운 버전의 CURL에 CA 번들이 포함되어 있지 않아 연결중인 서버의 인증서가 유효한 기관에 의해 서명되었는지 확인하지 못하는 것 같습니다. .
실제 오류는 다음과 같습니다.
CURL 오류 : SSL 인증서 문제입니다. CA 인증서가 올바른지 확인하십시오. 세부 사항 : 오류 : 14090086 : SSL 루틴 : SSL3_GET_SERVER_CERTIFICATE : 인증서 확인 실패
내가 찾은 일부 palces는 CURL을 호출 할 때 옵션을 설정하여 수동으로 CA 파일을 지정하거나 검사를 비활성화 할 것을 제안하지만 각 응용 프로그램의 CURL 호출을 수정하는 대신 전체적으로 문제를 해결하려고합니다.
CURL의 CA 문제를 서버 전체에서 수정하여 기존의 모든 응용 프로그램 코드를 수정하지 않고 그대로 작동하도록 할 수 있습니까?
답변
나는 똑같은 문제를 겪었고 약간의 파고를들은 후 컬 데브 사이트에서 우분투에 컬 준비가 된 CA 인증서 패키지를 다운로드 할 수 있음을 발견했다.
cd /etc/ssl/certs
sudo wget http://curl.haxx.se/ca/cacert.pem
이제 curl은 최신 번들을 사용하며 계속 사용하십시오.
답변
Ubuntu 12.04 와 비슷한 문제가 명령 줄에서 curl을 실행하여 github에있는 aws 명령 줄 도구를 얻었습니다. 명령 줄을 다음과 같이 실행했는지 확인했습니다.
curl https://raw.github.com/timkay/aws/master/aws -o aws --cacert /etc/ssl/certs/ca-certificates.crt
작동합니다. 그러나 “cacert”인수가 작동하지 않도록 CURL_CA_BUNDLE 환경 변수를 설정하려고 시도했습니다. 궁극적으로 인증서를 업데이트하면 문제가 해결 된 것 같습니다.
sudo update-ca-certificates
참고로, 어느 시점에서 curl.haxx.se에서 ca-certs를 업데이트하여 문제를 해결하지 못했지만 관련되었을 수 있습니다. (에서 sudo wget http://curl.haxx.se/ca/cacert.pem
실행 /etc/ssl/certs
).
답변
일반적으로 고유 한 구현이없고 OpenSSL에 대해 컴파일 된 소프트웨어는 시스템 전체에있는 ca-bundle.crt를 참조합니다. /usr/share/ssl/certs
.
Ubuntu에서는 위치가 다를 수 있지만 OpenSSL 패키지에는 ca 번들 파일이 포함되어야합니다.
CURL에는 인증서 확인 방법을 지정하는 다양한 옵션이 있습니다.
- 그만큼
CURL_CA_BUNDLE
은 CA-번들 파일의 위치를위한 환경 변수. --capath
CA 인증서가있는 디렉토리를 지정할 수 있습니다. (재정의CURL_CA_BUNDLE
)--cacert
CA 인증서 파일을 지정할 수 있습니다.
CentOS 서버에서 다음을 실행하여 CURL이 사용하는 ca 번들 경로를 식별 할 수 있습니다.
$ curl-config --ca
/usr/share/ssl/certs/ca-bundle.crt