작은숲:위키노트/CURL 60 오류 코드: 두 판 사이의 차이
잔글 (문자열 찾아 바꾸기 - "분류:위키노트에서 가져온 문서" 문자열을 "{{퍼온문서|위키노트|{{#invoke:string|replace|위키노트:|}}}}분류:위키노트에서 가져온 문서" 문자열로) |
잔글 (Utolee90님이 CURL 60 오류 코드 문서를 작은숲:위키노트/CURL 60 오류 코드 문서로 이동했습니다: 제목 변경) |
||
| (같은 사용자의 중간 판 6개는 보이지 않습니다) | |||
| 2번째 줄: | 2번째 줄: | ||
cURL로 HTTPS 접속을 할 때 아래와 비슷한 오류가 나와 놀라게 하는 경우가 있다. | cURL로 HTTPS 접속을 할 때 아래와 비슷한 오류가 나와 놀라게 하는 경우가 있다. | ||
cURL error: [60] Peer certificate cannot be authenticated with known CA certificates | cURL error: [60] Peer certificate cannot be authenticated with known CA certificates | ||
접속하고자 하는 서버가 공인된 CA에서 인증 받지 않은 인증서를 쓰고 있다는 말인데, 그다지 좋은 방법은 아니지만 공인된 CA 인증 절차를 건너뛰게 해서 이 오류를 피할 수 있다. 만약 [[위키노트 | 접속하고자 하는 서버가 공인된 CA에서 인증 받지 않은 인증서를 쓰고 있다는 말인데, 그다지 좋은 방법은 아니지만 공인된 CA 인증 절차를 건너뛰게 해서 이 오류를 피할 수 있다. 만약 [[작은숲:위키노트/PHP|PHP]] 스크립트라면 아래 내용을 추가한다. | ||
< | <syntaxhighlight lang="php"> | ||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); | curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); | ||
</ | </syntaxhighlight> | ||
[[Git]]을 사용하던 중 이런 오류를 만나면 아래 전역 설정을 해준다. | [[Git]]을 사용하던 중 이런 오류를 만나면 아래 전역 설정을 해준다. | ||
< | <syntaxhighlight lang="console"> | ||
$ git config --global http.sslVerify false | $ git config --global http.sslVerify false | ||
</ | </syntaxhighlight> | ||
== CA 번들 업데이트 == | == CA 번들 업데이트 == | ||
공인된 CA에서 인증 받은 인증서를 쓰고 있음에도 불구하고 이런 오류가 나온다는 것은 cURL에서 사용하는 시스템 기본 CA 번들에 해당 CA의 정보가 빠져있다는 말이다. 따라서 가장 좋은 방법은 이 시스템의 CA 번들 정보를 최신 정보로 업데이트 하는 것이다. | 공인된 CA에서 인증 받은 인증서를 쓰고 있음에도 불구하고 이런 오류가 나온다는 것은 cURL에서 사용하는 시스템 기본 CA 번들에 해당 CA의 정보가 빠져있다는 말이다. 따라서 가장 좋은 방법은 이 시스템의 CA 번들 정보를 최신 정보로 업데이트 하는 것이다. | ||
[[레드햇]] 계열의 [[위키노트 | [[레드햇]] 계열의 [[작은숲:위키노트/리눅스|리눅스]]에서는 <tt>ca-certificates</tt> 패키지를 제공하므로 이 패키지가 설치되어 있지 않다면 설치하도록 한다. 그리고 공유 시스템 인증서(shared system certificates)를 사용하도록 설정한다. | ||
< | <syntaxhighlight lang="console"> | ||
# yum -y install ca-certificates | # yum -y install ca-certificates | ||
... | ... | ||
# update-ca-trust enable | # update-ca-trust enable | ||
</ | </syntaxhighlight> | ||
나중에 여기에 추가할 CA 인증서가 있다면 해당 CRT 파일을 <code>/etc/pki/ca-trust/source/anchors</code> 디렉토리에 복사해놓고 <code>update-ca-trust extract</code> 명령으로 시스템에 공인된 CA 인증서로 추가한다. | 나중에 여기에 추가할 CA 인증서가 있다면 해당 CRT 파일을 <code>/etc/pki/ca-trust/source/anchors</code> 디렉토리에 복사해놓고 <code>update-ca-trust extract</code> 명령으로 시스템에 공인된 CA 인증서로 추가한다. | ||
< | <syntaxhighlight lang="console"> | ||
# cp ca.crt /etc/pki/ca-trust/source/anchors/ | # cp ca.crt /etc/pki/ca-trust/source/anchors/ | ||
# update-ca-trust extract | # update-ca-trust extract | ||
</ | </syntaxhighlight> | ||
== 시스템 CA 번들 변경 == | == 시스템 CA 번들 변경 == | ||
대부분의 리눅스 시스템에서는 기본 CA 번들이 <code>/etc/pki/tls/certs/ca-bundle.crt</code> 파일이다. 이 파일을 최신 CA 번들로 바꿔서 적용하는 방법도 있다. 최신 CA 번들은 https://curl.haxx.se/ca 에 가면 구할 수 있다. 여기서 제공하는 CA 번들은 [[위키노트 | 대부분의 리눅스 시스템에서는 기본 CA 번들이 <code>/etc/pki/tls/certs/ca-bundle.crt</code> 파일이다. 이 파일을 최신 CA 번들로 바꿔서 적용하는 방법도 있다. 최신 CA 번들은 https://curl.haxx.se/ca 에 가면 구할 수 있다. 여기서 제공하는 CA 번들은 [[작은숲:위키노트/파이어폭스|파이어폭스]] 소스 파일에서 추출한 것으로 [[레드햇]]의 <tt>ca-certificates</tt> 패키지에서도 이것을 쓴다고 한다. | ||
< | <syntaxhighlight lang="console"> | ||
# cp /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt-dist | # cp /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt-dist | ||
# curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt | # curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt | ||
| 31번째 줄: | 31번째 줄: | ||
Dload Upload Total Spent Left Speed | Dload Upload Total Spent Left Speed | ||
100 246k 100 246k 0 0 33126 0 0:00:07 0:00:07 --:--:-- 158k | 100 246k 100 246k 0 0 33126 0 0:00:07 0:00:07 --:--:-- 158k | ||
</ | </syntaxhighlight> | ||
<tt>update-ca-trust</tt>를 사용한다면 아래와 같이 할 수 있다. | <tt>update-ca-trust</tt>를 사용한다면 아래와 같이 할 수 있다. | ||
< | <syntaxhighlight lang="console"> | ||
# curl https://curl.haxx.se/ca/cacert.pem -o /usr/share/pki/ca-trust-source/anchors/cacert.pem | # curl https://curl.haxx.se/ca/cacert.pem -o /usr/share/pki/ca-trust-source/anchors/cacert.pem | ||
% Total % Received % Xferd Average Speed Time Time Time Current | % Total % Received % Xferd Average Speed Time Time Time Current | ||
| 39번째 줄: | 39번째 줄: | ||
100 246k 100 246k 0 0 92827 0 0:00:02 0:00:02 --:--:-- 151k | 100 246k 100 246k 0 0 92827 0 0:00:02 0:00:02 --:--:-- 151k | ||
# update-ca-trust extract | # update-ca-trust extract | ||
</ | </syntaxhighlight> | ||
== 참고 == | == 참고 == | ||
* {{언어|영어}} [https://access.redhat.com/solutions/523823 Getting an error "curl: (60) Peer certificate cannot be authenticated with known CA certificates" when trying to curl a site that has a VALID SSL certificate] | * {{언어|영어}} [https://access.redhat.com/solutions/523823 Getting an error "curl: (60) Peer certificate cannot be authenticated with known CA certificates" when trying to curl a site that has a VALID SSL certificate] | ||
| 49번째 줄: | 49번째 줄: | ||
* {{언어|영어}} [http://dominiquedecooman.com/blog/solution-curl-webservice-curlesslcacert-60-peer-certificate-cannot-be-authenticated-known-ca-ce Solution : Curl webservice CURLE_SSL_CACERT (60) Peer certificate cannot be authenticated with known CA certificates] | * {{언어|영어}} [http://dominiquedecooman.com/blog/solution-curl-webservice-curlesslcacert-60-peer-certificate-cannot-be-authenticated-known-ca-ce Solution : Curl webservice CURLE_SSL_CACERT (60) Peer certificate cannot be authenticated with known CA certificates] | ||
{{PHP}} | {{PHP}} | ||
[[분류:공유]] | [[분류:위키노트/공유]] | ||
[[분류:PHP]] | [[분류:PHP]] | ||
[[분류:컴퓨터 보안]]{{퍼온문서|위키노트|{{#invoke:string|replace|위키노트:|}}}}[[분류:위키노트에서 가져온 문서]] | [[분류:컴퓨터 보안]]{{퍼온문서|위키노트|{{#invoke:string|replace|{{PAGENAME}}|위키노트:|}}}}[[분류:위키노트에서 가져온 문서]] | ||
2022년 5월 7일 (토) 14:52 기준 최신판
cURL로 HTTPS 접속을 할 때 아래와 비슷한 오류가 나와 놀라게 하는 경우가 있다.
cURL error: [60] Peer certificate cannot be authenticated with known CA certificates
접속하고자 하는 서버가 공인된 CA에서 인증 받지 않은 인증서를 쓰고 있다는 말인데, 그다지 좋은 방법은 아니지만 공인된 CA 인증 절차를 건너뛰게 해서 이 오류를 피할 수 있다. 만약 PHP 스크립트라면 아래 내용을 추가한다.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Git을 사용하던 중 이런 오류를 만나면 아래 전역 설정을 해준다.
$ git config --global http.sslVerify false
CA 번들 업데이트
공인된 CA에서 인증 받은 인증서를 쓰고 있음에도 불구하고 이런 오류가 나온다는 것은 cURL에서 사용하는 시스템 기본 CA 번들에 해당 CA의 정보가 빠져있다는 말이다. 따라서 가장 좋은 방법은 이 시스템의 CA 번들 정보를 최신 정보로 업데이트 하는 것이다. 레드햇 계열의 리눅스에서는 ca-certificates 패키지를 제공하므로 이 패키지가 설치되어 있지 않다면 설치하도록 한다. 그리고 공유 시스템 인증서(shared system certificates)를 사용하도록 설정한다.
# yum -y install ca-certificates
...
# update-ca-trust enable
나중에 여기에 추가할 CA 인증서가 있다면 해당 CRT 파일을 /etc/pki/ca-trust/source/anchors 디렉토리에 복사해놓고 update-ca-trust extract 명령으로 시스템에 공인된 CA 인증서로 추가한다.
# cp ca.crt /etc/pki/ca-trust/source/anchors/
# update-ca-trust extract
시스템 CA 번들 변경
대부분의 리눅스 시스템에서는 기본 CA 번들이 /etc/pki/tls/certs/ca-bundle.crt 파일이다. 이 파일을 최신 CA 번들로 바꿔서 적용하는 방법도 있다. 최신 CA 번들은 https://curl.haxx.se/ca 에 가면 구할 수 있다. 여기서 제공하는 CA 번들은 파이어폭스 소스 파일에서 추출한 것으로 레드햇의 ca-certificates 패키지에서도 이것을 쓴다고 한다.
# cp /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt-dist
# curl https://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 246k 100 246k 0 0 33126 0 0:00:07 0:00:07 --:--:-- 158k
update-ca-trust를 사용한다면 아래와 같이 할 수 있다.
# curl https://curl.haxx.se/ca/cacert.pem -o /usr/share/pki/ca-trust-source/anchors/cacert.pem
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 246k 100 246k 0 0 92827 0 0:00:02 0:00:02 --:--:-- 151k
# update-ca-trust extract
참고
- (영어) Getting an error "curl: (60) Peer certificate cannot be authenticated with known CA certificates" when trying to curl a site that has a VALID SSL certificate
- (영어) PHP: curl_setopt
- (영어) Adding trusted root certificates to the server
- (영어) cURL - Extract CA Certs from Mozilla
- (영어) How to update cURL CA bundle on RedHat?
- (영어) How to securely acquire the Mozilla root certificate bundle for use with curl, Net::HTTP, etc.
- (영어) Solution : Curl webservice CURLE_SSL_CACERT (60) Peer certificate cannot be authenticated with known CA certificates
| PHP 7.0 | |
|---|---|
| PHP 5.6 | |
| PHP 5.5 | |
| 확장 기능 | |
| 활용 | |
| 소프트웨어 | |