[리눅스] curl: (60) SSL certificate problem: unable to get local issuer certificate

Becoming a Data Engineer ·2024년 1월 17일
1

에러 모음집

목록 보기
1/6
post-thumbnail

에러 발생

WSL에서 Airflow를 설치하기 위해 curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.0/docker-compose.yaml' 명령어를 실행하자 인증서 에러가 발생했다.

에러 메세지

curl: (60) SSL certificate problem: unable to get local issuer certificate

원인

이 오류는 SSL/TLS 연결 중에 클라이언트가 서버의 SSL 인증서를 확인할 때 발생하는 문제로 서버의 SSL 인증서가 신뢰할 수 있는 인증 기관에 의해 발행되지 않아서 발생한다.

curl 은 기본적으로 https 사이트의 SSL 인증서를 검증한다. 인증 기관의 인증서 목록이 없거나 모르는 기관에서 발급한 인증서일 경우 다음과 같은 인증서 검증 에러를 발생시키고 동작을 중지하게 된다.

출처 : https://www.lesstif.com/gitbook/curl-ca-cert-15892500.html

해결 방법

curl 의 신뢰하는 인증 기관 목록(CA List; Certificate Authority List)에 접속하려는 사이트의 인증서를 발급한 기관을 추가하는 방법으로 위 문제를 해결했다.

해결 과정을 요약하자면, openssl로 해당 서버에 연결하고 연결된 서버의 SSL 인증서를 추출한 뒤 /etc/ssl/certs/ca-certificates.crt 추가했다.

참고 사이트 : https://www.lesstif.com/gitbook/curl-ca-cert-15892500.html

1) 연결하고자 하는 사이트가 정상적인 인증서를 갖고 있음을 확인

2) openssl 로 해당 서버에 연결
openssl s_client -connect airflow.apache.org:443 |tee certlog

3) 화면 제일 마지막 ___ 밑에 QUIT 입력
log 파일 및 Base64 Encoding 된 SSL 인증서가 certlog 파일에 저장됨

4) certlog 에서 인증서 부분만 추출
openssl x509 -inform PEM -in certlog -text -out certdata

5) 제대로 추출되었는지 openssl 로 인증서 파싱해서 출력 확인
openssl x509 -inform PEM -text -in certdata

6) 추출된 서버인증서인 certdata 파일의 내용을 ca-certificates.crt 에 추가
cat certdata >> /etc/ssl/certs/ca-certificates.crt

7) VIM 에디터로 제대로 추가되었는지 확인
vi /etc/ssl/certs/ca-certificates.crt

VIM 명령어 TIP!

  • VIM 명령모드에서 G 를 누르면 문서 제일 하단으로 이동한다.

8) [추가작업] 8번에서 VIM으로 확인한 결과, cat 으로 추가한 내용에서 불필요한 부분이 함께 포함된 것을 확인하였다.

인증서는 certlog 파일내 "BEGIN CERTIFICATE" and "END CERTIFICATE" 사이에 존재하는데, "BEGIN CERTIFICATE" 전 문자열들이 포함되어 있는 걸 확인하였고 불필요한 문자열들을 삭제하고 저장했다.

ca-certificates.crt 편집할 때 TIP!

해당 파일은 read-only 파일인데, 일반 유저로 들어가서 편집하면 !wq 를 해도 해당 파일을 저장할 수 없다. 따라서, 편집 전 root 권한으로 유저를 전환한 뒤 편집해야 한다.

root 사용자 전환 명령어 : su [저장해둔 root 계정명]

VIM 명령어 TIP!

  • VIM 명령모드에서 여러 줄을 한 번에 삭제하려면, 원하는 위치의 첫번째 줄에 커서 -> 몇 줄 선택할 건지 숫자 + d + d

9) curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.0/docker-compose.yaml' 를 재실행하면 정상적으로 설치가 완료된다.

profile
I want to improve more 👩🏻‍💻

0개의 댓글

관련 채용 정보