작은숲:위키노트/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 인증 절차를 건너뛰게 해서 이 오류를 피할 수 있다. 만약 [[위키노트:PHP|PHP]] 스크립트라면 아래 내용을 추가한다.
접속하고자 하는 서버가 공인된 CA에서 인증 받지 않은 인증서를 쓰고 있다는 말인데, 그다지 좋은 방법은 아니지만 공인된 CA 인증 절차를 건너뛰게 해서 이 오류를 피할 수 있다. 만약 [[작은숲:위키노트/PHP|PHP]] 스크립트라면 아래 내용을 추가한다.
<source lang="php">
<syntaxhighlight lang="php">
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
</source>
</syntaxhighlight>
[[Git]]을 사용하던 중 이런 오류를 만나면 아래 전역 설정을 해준다.
[[Git]]을 사용하던 중 이런 오류를 만나면 아래 전역 설정을 해준다.
<source lang="console">
<syntaxhighlight lang="console">
$ git config --global http.sslVerify false
$ git config --global http.sslVerify false
</source>
</syntaxhighlight>
== CA 번들 업데이트 ==
== CA 번들 업데이트 ==
공인된 CA에서 인증 받은 인증서를 쓰고 있음에도 불구하고 이런 오류가 나온다는 것은 cURL에서 사용하는 시스템 기본 CA 번들에 해당 CA의 정보가 빠져있다는 말이다. 따라서 가장 좋은 방법은 이 시스템의 CA 번들 정보를 최신 정보로 업데이트 하는 것이다.
공인된 CA에서 인증 받은 인증서를 쓰고 있음에도 불구하고 이런 오류가 나온다는 것은 cURL에서 사용하는 시스템 기본 CA 번들에 해당 CA의 정보가 빠져있다는 말이다. 따라서 가장 좋은 방법은 이 시스템의 CA 번들 정보를 최신 정보로 업데이트 하는 것이다.
[[레드햇]] 계열의 [[위키노트:리눅스|리눅스]]에서는 <tt>ca-certificates</tt> 패키지를 제공하므로 이 패키지가 설치되어 있지 않다면 설치하도록 한다. 그리고 공유 시스템 인증서(shared system certificates)를 사용하도록 설정한다.
[[레드햇]] 계열의 [[작은숲:위키노트/리눅스|리눅스]]에서는 <tt>ca-certificates</tt> 패키지를 제공하므로 이 패키지가 설치되어 있지 않다면 설치하도록 한다. 그리고 공유 시스템 인증서(shared system certificates)를 사용하도록 설정한다.
<source lang="console">
<syntaxhighlight lang="console">
# yum -y install ca-certificates
# yum -y install ca-certificates
...
...
# update-ca-trust enable
# update-ca-trust enable
</source>
</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 인증서로 추가한다.
<source lang="console">
<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
</source>
</syntaxhighlight>
== 시스템 CA 번들 변경 ==
== 시스템 CA 번들 변경 ==
대부분의 리눅스 시스템에서는 기본 CA 번들이 <code>/etc/pki/tls/certs/ca-bundle.crt</code> 파일이다. 이 파일을 최신 CA 번들로 바꿔서 적용하는 방법도 있다. 최신 CA 번들은 https://curl.haxx.se/ca 에 가면 구할 수 있다. 여기서 제공하는 CA 번들은 [[위키노트:파이어폭스|파이어폭스]] 소스 파일에서 추출한 것으로 [[레드햇]]의 <tt>ca-certificates</tt> 패키지에서도 이것을 쓴다고 한다.
대부분의 리눅스 시스템에서는 기본 CA 번들이 <code>/etc/pki/tls/certs/ca-bundle.crt</code> 파일이다. 이 파일을 최신 CA 번들로 바꿔서 적용하는 방법도 있다. 최신 CA 번들은 https://curl.haxx.se/ca 에 가면 구할 수 있다. 여기서 제공하는 CA 번들은 [[작은숲:위키노트/파이어폭스|파이어폭스]] 소스 파일에서 추출한 것으로 [[레드햇]]의 <tt>ca-certificates</tt> 패키지에서도 이것을 쓴다고 한다.
<source lang="console">
<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
</source>
</syntaxhighlight>
<tt>update-ca-trust</tt>를 사용한다면 아래와 같이 할 수 있다.
<tt>update-ca-trust</tt>를 사용한다면 아래와 같이 할 수 있다.
<source lang="console">
<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
</source>
</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

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/CURL 60 오류 코드 문서입니다.