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 명령모드에서
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 명령모드에서 여러 줄을 한 번에 삭제하려면,
원하는 위치의 첫번째 줄에 커서
->몇 줄 선택할 건지 숫자
+d
+d
9) curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.0/docker-compose.yaml'
를 재실행하면 정상적으로 설치가 완료된다.