작은숲:위키노트/CURL 60 오류 코드

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
Utolee90 (토론 | 기여)님의 2017년 3월 1일 (수) 23:51 판 (판 1개를 가져왔습니다: 자유위키의 위키노트 데이터 가져옴)

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

참고