본문 바로가기
I T/Linux

무료 SSL발급 & 자동갱신, Letsencrypt 설치 및 운용 (CentOS 6.X)

by 루솨 2017. 4. 13.


Letsencrypt 간략 소개


* HTTPS Everywhere 를 추구하는 비영리 프로젝트

* 스폰서 : Mozilla, Akamai, Cisco, eff, Identrust

* IdenTrust cross-sign됨

* SSL 인증서 100% 무료화 ( 기간 3개월 )

* 인증기간 연장 및인증서 재발급 무료 

* 사용편리성 : 콘솔상에서 인증서 발급/갱신/설치/세팅 자동화.

* 멀티도메인 지원, SAN 기능(여러 도메인을 한 인증서로 묶어주는 기능) 지원





서버 상황

- Centos 6.8 64bit

- Apache/2.4.3 (Unix)   ( apache 2.2 도 됨 )

- python 2.6.6  -> 2.7.10 으로 업그레이드    

  ( letsencrypt 에서 제공 하는 certbot-auto 스크립트가 있는데  이 스크립트는 python 2.7 이상에서만 됨을 참고 )




Letsencrypt 설치 하기.


정말 간단합니다. 커맨드 바로바로 올려드리겠습니다.



###

yum update

yum install epel-release

rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm

yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs


cd /root/

git clone https://github.com/letsencrypt/letsencrypt


여기까지 설치 끝.


### 인증서 발급


cd /root/letencrypt                 ## 이동


./certbot-auto certonly --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --agree-tos --email XXX@XXXXX.com --webroot -w /home/www/html  -d my.mydomain.com



자 여기서 위의 커맨드 중에 수정해야될 부분은


--email XXX@XXXXX.com --webroot -w /home/www/html  -d my.mydomain.com


이부분 입니다.


이메일 넣으시고 대강 넣으셔도 되요. 만료 이메일 안받으실려면


webroot 에는 웹돌리시는 소스 도큐멘터리경로 적어주시고.  

-d 옵션 뒤에는 도메인을 적어주시면 됩니다.

만약 도메인이 더 있으시다면  -d 을 더 추가해서 입력 하면 됩니다.      

-d my.mydomain1.com -d my111.mydomain.com -d my222.mydomain.com  



하나 하나 설명내지 상세하게 보면서 진행 하실분들은.


./certbot-auto --apache 


치시고 하나씩 진행 하시면 됩니다.


이상 없는 경우에는 위 인증서 발급 명령어만 치시면 바로 발급이 되시는데요

경로 위치는  아래 위치 처럼 live 디렉토리 하단에 있습니다.


/etc/letsencrypt/live/my.mydomain.com/        


발급된 인증서 파일을 /etc/letsencrypt/archive 에 있지만 live 에서 archive 하단 파일들을 심볼릭 링크걸어서 사용 되고 있습니다.  키 생성은


cert.pem , chain.pem fullchain.pem  , privkey.pem  이렇게 4개!



아파치의 ssl.conf 에서  이런식으로 등록 해주시면 됩니다.


SSLCertificateFile  /etc/letsencrypt/live/my.mydomain.com/cert.pem

SSLCertificateKeyFile  /etc/letsencrypt/live/my.mydomain.com/privkey.pem

SSLCertificateChainFile /etc/letsencrypt/live/my.mydomain.com/chain.pem

SSLCACertificateFile /etc/letsencrypt/live/my.mydomain.com/fullchain.pem



ssl.conf 내용을 같이 올려 드릴게요
##########################################################################

SSLProtocol            ALL -SSLv2 -SSLv3
SSLCipherSuite         ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK
SSLHonorCipherOrder    on
 
Listen 443
<VirtualHost *:443>
DocumentRoot /home/www/html
ServerName my.mydomain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/my.mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.mydomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/my.mydomain.com/chain.pem
SSLCACertificateFile /etc/letsencrypt/live/my.mydomain.com/fullchain.pem
Header always set Strict-Transport-Security "max-age=15552000"
</VirtualHost>


##############################################################



#### 인증서 자동갱신



이 자동갱신이란게  centos 6 에서는 python 2.6.x 밖에 지원 안해서 강제로 2.7 로 올리던가

수동으로 발급 해서 다시 등록 하던  수동 발급을 스크립트로 만들던 해야 합니다.

centos7 사용자는 기본 python 2.7 이상이라  걍 재발급 스크립트만 실행 하면 되죠.



자신의 서버의 python 버전을 확인 해봅시다.


# python -V  


기본 centos 6.X 는  최신 업데이트를 해도

2.6.6 으로 밖에 안됩니다.


자 수동으로 파이썬 버전을 올려봅시다.



## 참고로 python 으로 작업 하는게 많으신분들은....하지마세요. 다 맞춰줘야 하는데 개고생같에서 추추천 안드립니다.....


cd /usr/local/src          ## 이동

wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz            ##다운 !


cd Python-2.7.10          ## 이동


./configure && make && make altinstall                          ##  altinstall 이여야 함


error는 없어야 합니다.



자 다음..


ls /usr/bin/python*   치시면


/usr/bin/python

/usr/bin/python2 -> python

/usr/bin/python2.6

/usr/bin/python2.6-config

/usr/bin/python-config -> python2.6-config

/usr/bin/python-pip -> pip


이렇게 보여지실텐데.


먼저 버전 확인 한번 해보죠.


/usr/bin/python -V  과

Python 2.6.6


/usr/local/bin/python2.7 -V 

Python 2.7.10


으로 나오면 됩니다.


자 이제 바꿔 치기 할건데요.

mv /usr/bin/python /usr/bin/python_old

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


이렇게 바꾸고 난뒤에


python -V  쳤을때

Python 2.7.10 으로 나오면 됩니다.


이제 갱신은 할수 있는데요. 문제는 yum 이 안됩니다.

왜냐하면 centos6.X 는   python 2.6 으로 동작 하는데요   정확한 이유는 몰라요.  2.7 로 박으면 

yum 이 안되네요.


이것도 변경 해보죠.

vi /usr/bin/yum  여시고 수정하시면 됩니다


제일 첫번째 줄에


#!/usr/bin/python → #!/usr/bin/python2.6  으로 바꾸시면 됩니다.


python2.6 으로 변경한 이유는 


ls /usr/bin/python2.6   칠때


/usr/bin/python2.6  이게 보여지면 됩니다.   2.4 버전에서 진행 하시는분들은 확인후에  그 버전 파일로 수정 하시면 됩니다.


만약 python 원복하실려면 


yum reinstall python 치시면 되는데  원복은 아니고  지원받는 최신 버전( python 2.6.6.xxx)  으로 설치 되실겁니다.  




그리고 python 모듈인  pip 와 easy_install 을 사용중이신분들 안되실텐데요

해결 될수 있는 아래 링크 하나 올려드릴게요 참조 하시면 됩니다.


http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_pip,_easy_install_%EC%A0%95%EC%83%81%ED%99%94



python 2.7 이상은 자동갱신이 됩니다. 쉬워요.


저는 root 디렉토리에 설치 되었기 때문에 아래 경로가 이런데요. 계정의 홈디렉토리에 있습니다.


/root/.local/share/letsencrypt/bin/letsencrypt renew >> /var/log/letsencrypt/renew.log



cat /var/log/letencrypt/renew.log

-------------------------------------------------------------------------------

Processing /etc/letsencrypt/renewal/my.mydomain.com.conf

-------------------------------------------------------------------------------


The following certs are not due for renewal yet:

  /etc/letsencrypt/live/my.mydomain.com/fullchain.pem (skipped)

No renewals were attempted.


라는 로그가 나오는데 해석 하면
갱신 될게 없어서 갱신이 시도 되지 않았다 입니다.

2.7 되기전에는 저런 로그도 없었어요... ㅜㅜ  실행하면 fail error 가 났죠.

###############################################################



letencrypt 인증서는 3개월 동안 유지이니  2개월 조금 지나고 재대로 되는지 

눈으로 확인하는건 좀 지나봐야 할것같습니다.


일단 crontab 에 등록은 해놨습니다.


00 5 * * 1 /root/.local/share/letsencrypt/bin/letsencrypt renew >> /var/log/letsencrypt/renew.log



매주 월요일 아침 5시 마다 돌려 놓겠금..!!

확인 해보고 이상 있으면 수정 바로 하겠습니다.!!

그럼.........




참고링크 : 


https://certbot.eff.org/#centos6-apache


https://letsencrypt.org/




























'I T > Linux' 카테고리의 다른 글

Centos Swap 파일 만들기  (0) 2018.09.14
CentOS6에서 SSH 접근 시도 차단하기  (0) 2017.10.01
ssh-keygen rsa [ 암호 없이 ssh 접속 ]  (0) 2016.01.13
리눅스 일반.  (0) 2015.12.04
폴더별 용량 확인  (0) 2015.12.04