git gnutls_handshake() 에러 발생시 해결 방법
gnutls_handshake() failed: Illegal parameter 발생시 해결 방법
root@~~# git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/XXX
Cloning into 'XXX'...
fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/XXX/': gnutls_handshake() failed: Illegal parameter
git을 쓰려고 설정 하다 보니 위와 같은 메시지가 뜨면서 안되는 경우가 있었다.
필자의 경우 github 쓸때는 문제가 없었는데 AWS의 CodeCommit 을 사용시 이슈가 발생했었다.
이유는 git 통신이 https를 사용하는 경우 SSL 인증을 하기 위해 사용하는 gnutls 패키지 때문이었는데, 해결하기가 만만치 않다.
구글링 중 git 설치시 gnutls 대신 openssl 을 사용하도록 compile을 해서 설치하라는 팁이 있어서 공유한다.
* 아래는 ubuntu 기준이다.
root@~~# apt-get install build-essential fakeroot dpkg-dev
root@~~# mkdir ~/git-openssl
root@~~# cd ~/git-openssl
root@~~# apt-get source git
root@~~# apt-get build-dep git
root@~~# apt-get install libcurl4-openssl-dev
root@~~# dpkg-source -x git_1.9.1-1ubuntu0.3.dsc
root@~~# cd git-1.9.1
root@~~# vim debian/control
Build dependency 설정에 libcurl4-gnutls-dev 를 libcurl4-openssl-dev 로 수정한다.
...... (중략)
Build-Depends: libz-dev, libpcre3-dev, gettext,
libcurl4-openssl-dev, libexpat1-dev,
.... (중략)
그리고 패키지를 빌드 한다.
root@~~# sudo dpkg-buildpackage -rfakeroot -b
빌드된 패키지를 install 하자.
root@~~# dpkg -i ../git_1.9.1-1ubuntu0.3_amd64.deb
끝-
[참고]
- http://docs.aws.amazon.com/codecommit/latest/userguide/troubleshooting.html#troubleshooting-ge4
- http://askubuntu.com/questions/186847/error-gnutls-handshake-failed-when-connecting-to-https-servers