본문 바로가기

https 적용 - centos 5.11에서 무료 Let’s Encrypt 무료인증서 적용기

운용중인 사이트가 http로 되어 있어 시대흐름에 맞춰 https로 바꾸고자.

찾아보던 중에 유료와 무료등 많이 다양한 인증서 종류가 있었는데.


그중에서 많이 쓴다는 무료 인증서인 Let's Encrypt를 설치 하기로 하였다.


리눅스는 언제나 느끼는 거지만 뭐 하나를 설치할려면 다른것도 맞춰줘야 하고 그게 되어야 이게 되고 이게 되야 저게 되는게 많은 경우라서 실제로는 단순히 원하는 프로그램을 설치만 한다고 되는 그런 간단한 경우는 드물다 하겠다.


언제나 나같은 사람이 있고 또 서버를 신규로 설정시에 기억이 나지 않아 그때 다시 찾아야 하는 번거로움으로 기록용으로 남겨놓는 샘. 한번 더 상기하는 샘 치고 과정을 정리해 보았다.


위에서 아래로 순서대로 let's encypt를 설치를 윈도우 setup하듯이 하면 제일 좋겠지만 언제나 파이썬이나 기타 openssl버전등 생각치 못한 문제가 생기고 그 문제를 해결하기 위해서 다른걸 또 설치해야 하는 과정이 파생되게 된다.


이번에도 역시 마찬가지 인데. 일단 서버 사양이나 설치되어 있는 버전을 파악을 하고 부족하면 업그레이드를 해서 맞춰야 하는 작업등이 다양하게 있기 때문에 본인의 사양이 어떤건지 확인을 해보자.


설치를 위해 필요에 따라 git이나 설치되어 있는 ssl 버전 0.9.8을 올려야 한다거나 하는 부분이 있는데 너무 많아지기 때문에 간편하게 할 수 있는거는 하기로 했다.


우선 전체 과정은

1.먼저 certbot-auto 설치

2.cerbot-auto로 인증서 도메인 입력 후 생성

3.테스팅 후 90일 자동 갱신 되게 크론 스크립트 설정

4.완료.


가 되겠다.


하지만 서두에도 있듯이 서버 버전이 구버전이라서 그와 관련한 파이썬이나 curl등의 구버전의 문제가 발생을 하기 때문에 인증서 발급을 정상적으로 만들기 위해서는 이러한 부분들도 업데이트나 재설치 버전업등의 작업을 해야 비로소 ceretbot-auto가 동작을 하게 된다.


내 서버 사양 : 

OS : CENTOS 5.11 32bit.

python 버전 : 2.4

curl : 7.15.5f


certbot-auto로 작업을 할 것이기 때문에 

알려진 몇가지 다운로드 방법중 wget https://dl.eff.org/certbot-auto나

curl -O https://dl.eff.org/certbot-auto나

git@github.com:certbot/certbot.git 등등을 하니.


curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version


이런 에러메세지를 뱉어낸다.


그래서 나 같은 경우는 귀찮아서 간편하게 직접 github.com:certbot/에 가서 클론 다운로드 받고 서버 적당한 폴더에 업로드를 하였다.


그리고 퍼미션 에러가 나기 때문에 적당히 chmod a+x certbot-auto로 풀어준다.


비로소 이제 인증서를 생성해야 되는데 아래와 같다.


./certbot-auto certonly \

--manual \

--preferred-challenges=dns \

--email 메일주소 \

--server https://acme-v02.api.letsencrypt.org/directory \

--agree-tos \

--debug \

--no-bootstrap \

-d  도메인주소 \

-d *.도메인 주소


이렇게 입력을 하게 되면 또다른 문제가 발생을 하게 되는데 바로 오래된 내서버의 파이썬 버전이 낮아서 안된다고 한다.


WARNING: couldn't find Python 2.7+ to check for updates.

Creating virtual environment...

Cannot find any Pythons; please install one!


내 서버의 파이선 버전은 2.6.8이다. 힘이 있나 이제 잠시  인증서는 접어두고 파이썬 업그레이드를 해야 하는 순서. 미리 알아둘게 업데이트를 하면 yum에러가 나니 이것도 잡아줘야 하겠지


나는 2.7.12

홈페이지에서 골라서 소스버전 받던 wget으로 

wget --no-check-certificate -N http://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz


로 받던 편한데로 받으면 된다.


다운로드 http://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz

tar xzf Python-2.7.12.tgz

cd Python-2.7.12

./configure

make

make altinstall


파일을 다운로드 받았다면 혹은 wget이나 curl 등등으로 받을때 보안이슈만 없다면 받는거는 무난히 받아진다. 나는 참고로 홈페이지에서 다운로드해서 서버 업로드 후에 사용하였다.


설치 과정에서 뭔가 문제는 일어나지 않으므로 그냥 넘어가자.


경로별 기존거와 새로 설치된 부분을 확인해보자

python -V 를 하면 기존대로 2.6.8버전이고

/usr/bin/python을 해도 버전을 알 수 있다.

/usr/local/bin/python2.7 폴더에 위치하고 있으니 이제 바꿔야 한다.



해당 /usr/bin/python 파일을 /usr/bin/python2.7 폴더의 것으로 바꿔야 한다.

cp 명령으로 하자.

cp /usr/local/bin/python2.7 /usr/bin/python

이때 혹시나 해서 덮어쓰기 그렇다면 기존놈은 다른이름으로 변경을 해두자.


나는 심볼릭링크로 걸어줬다.

ln -s /usr/local/bin/python2.7 /usr/bin/python


다시 버전을 확인해 보자.

python -V



정상적으로 새로 설치한 파이썬 버전이 나온다 나는 2.7.12


자 다시 본론으로 돌아와서 인증서를 만드는 명령어를 다시 쳐보자.

./certbot-auto certonly \

--manual \

--preferred-challenges=dns \

--email 메일주소 \

--server https://acme-v02.api.letsencrypt.org/directory \

--agree-tos \

--debug \

--no-bootstrap \

-d 도메인 \

-d *.도메인


이제 파이썬 버전이 낮다는 에러는 안나오나 다른 에러가 나온다.. 에휴..


WARNING: unable to check for updates.

Creating virtual environment...

./certbot-auto: line 975: virtualenv: command not found

virtualenv가 없다는 소리. 그럼 설치를 해주자.

그러나 pip도 없는건 함정.


글쓰는 시점에서 setuptool은 40.1.0이다. 역시 받아서 서버 업로드 후 압축해제 zip압축이다.


unzip setuptools-40.1.0.zip

cd setuptools-40.1.0

python setup.py install


이쯤에서 순서를 정리해 보면 python-pip를 설치 한뒤에 virtualenv를 설치 한뒤에 다시 위의 인증서를 입력해보는게 새로운 줄줄이사탕이 되겠지.


pypi.python.org에서 최신버전 pip를 다운로드 받아서 업로드 하자.

현 글쓰는 기준으로 pip-18.0.tar.gz를 받아서 압축 풀고 설치함.

업로드 후 나는 /usr/src/폴더에서 압축 풀고 작업함..


파일 다운

tar zxvf pip-18.0.tar.gz

cd pip-18.0

python setup.py install

pip -V



여기까지 간략하게 되었으면 다시 virtualenv를 설치하자.


pip install virtualenv


혹은 pypi.org/project/virtualenv/ 에서 직접받아서 압축 풀어도 됨.

tar xzf virtualenv-16.0.0.tar.gz

cd virtualenv-16.0.0

python setup.py install


여기까지 필요한 각종 의존성이나 구버전이나 필요한 패키지등은 갖추게 되엇다.
파이썬 2.7이상으로 버전업 하였으며 certbot-auto 이용시 필요한 virtualenv을 설치하기 위해 pip, setuptools 등등도 설치하였다.

자 힘겹지만 다시 인증서 발급을 시도 해보자.

certbot has problem setting up the virtual environment

인증서 생성 시도 중 이런 오류를 뱉어낸다.


결과적으로 certbot-auto를 실행하기 위해서는 서버에 

파이선 2.7이상의 버전과 pip설치 그리고 virtualenv 설치가 된 환경.


그리고 나처럼 위에 wget이든 curl이든 다운로드 시도시 에러가 발생하는 부분들을 해결을 해야 한다.


curl은 centos6버전에서 작업을 해보았을 때 (6버전 curl : 7.19.7)을 레포 추가후

7.61.0으로 한뒤 재시도 하였을 떄 Let's Encrypt가 시도가 정상적으로 되었다.


centos5 에서도 레포 추가후 (참고)


[CityFan]

name=City Fan Repo

baseurl=http://www.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch/

enabled=1

gpgcheck=0


시도해보았으나 되질 않고 여전히 같은 에러 메세지를 뿜는다.


결과적으로 5.11에서는 잠시 멈추고 있다. 추후 업데이트 하도록 하자.