증상

github 나 gitlab 등의 git 서버에 SSL 로 연결시 다음과 같은 에러가 발생한다.

 

error: Protocol https not supported or disabled in libcurl while accessing https://github.com/

 

원인

git 은 https 로 연결시 내부적으로 curl 의 라이브러리인 libcurl 을 사용하여 연결하는데 사용하는 동적 라이브러리가 https 를 지원하지 않는 버전이라 발생한다. 동적 라이브러리 파일 명은 OS 별로 다음과 같다.

  • libcurl.dll - 윈도
  • libcurl.so - 리눅스
  • libcurl.dylib - Mac OS X

https 여부를 지원하는지는 OpenSSL 라이브러리와 링크되어 있는지 보면 되며 이는 다음과 같은 방법으로 할 수 있다.

 

윈도

DLL 의 의존성을 확인할 수 있는 Dependency Walker 를 설치한후에 Dependency Walker 에서 libcurl.dll 을 열어서 확인한다.

 

https 지원

그림처럼 libcrypto.dlllibssl.dll 을 링크하고 있다.

https 미지원

 libcrypto.dll 과 libssl.dll 가 링크되어 있지 않다. 이 버전의 libcurl.dll 이 PATH 에 먼저 걸려 있을 경우 에러가 발생한다.

 

 

 

리눅스

ldd 로 libcurl.so 가 libssl 과 libcrypto 에 링크되었는지 확인한다.

$ ldd /usr/lib/libcurl.so


libresolv.so.2 => /lib/libresolv.so.2 (0x003e7000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00401000)
/lib/ld-linux.so.2 (0x0080e000)
libkrb5support.so.0 => /lib/libkrb5support.so.0 (0x00767000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x007c6000)
libssl.so.10 => /usr/lib/libssl.so.10 (0x004f0000)
libcrypto.so.10 => /usr/lib/libcrypto.so.10 (0xf73b0000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00b5f000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0041c000)
libfreebl3.so => /lib/libfreebl3.so (0x00557000)

 

Mac OS X

향후 추가

otool -L /usr/lib/libcurl.dylib 
CODE

 

해결

윈도

윈도를 사용한다면 https 를 지원하지 않는 libcurl.dll 을 찾아서 삭제하거나 https 를 지원하는 libcurl.dll 로 대체해 준다.  주로 다음 경로에 libcurl.dll 이 설치되는 경우가 많다.

  • C:\Windows\Syswow64(Windows 64) 
  • C:\Windows\System32
  • C:\"Program Files"
  • C:\"Program Files(x86)"

adobe 의 특정 제품은 설치시 https를 지원하지 않는 libcurl.dll을 설치하는 경우가 있다.

Linux / Mac OS

https 를 지원하는 libcurl 이 먼저 로딩되도록 PATH 를 수정하거나 기존 libcurl에 덮어쓴다.

참고