본문 바로가기

WebDev

letsencrypt

letsencrypt + ubuntu + apache2 == https

https는 어떤 사이트를 만들더라도 반드시 필요한 프로토콜이다.
안전을 위해 모든 요청에 사용할 수도, 성능을 위해 민감한 정보가 오가는 경우에만 사용할 수도 있다.
난 취준생이라 프로그래밍을 해서 얻는 수입이 없으므로(…) 무료 인증서를 제공하는 letsencrypt를 사용해 서버 인증서를 준비했다.
시작해보자.

자동


공식 홈페이지의 문서를 참고했다.

자동: letsencrypt Interactive shell 사용

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

letsencrypt-auto는 python을 주로 사용해 만들어진 스크립트다. --apache, --nginx를 추가 매개변수로 사용해 깔끔하게 인증서 생성, 인증서 적용을 한큐에 끝낼 수 있다.

에러 메시지가 출력되지 않았다면 직접 사이트에 들어가 https지원이 잘 되는지 체크하면 끝이다. 참 편리하다.

수동


인증서 생성: letsencrypt

나같은 경우는 기를 쓰고 해봐도 자동으로는 잘 안되어서 결국 수동으로 인증서 생성을 했다.

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly -a standalone -d 도메인명

이렇게 생성할 경우 ./letsencrypt-auto certonly -a standalone -d 도메인명 명령을 내리기 전에 웹 서버를 꺼두어야 한다. 안그럼 충돌날 수도 있다.

잘 생성되었다면 아래와 같은 형식의 메시지를 볼 수 있다:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at 
 `etc/letsencrypt/live/api.phople.us/fullchain.pem`
 - Your cert will expire on **2016-05-28**. To obtain a new version of the certificate in the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

완성되었다면 .pem파일이 여러 개 생성될 것이다. 정확한 파일명은 매번 바뀌는 듯 하나, 쨋든 이런 이름이다.

생성된 파일에 대한 정보는 다음과 같다:

  • cert.pem는 인증서(cert) 데이터,
  • chain.pem은 키 체인,
  • privkey.pem는 개인키(key) 데이터

잘 저장도록 하자. 잃어버리지거나 유출되지 않도록.

부록 - 인증서 적용: VirtualHost파일에 코드 추가

터미널에 sudo a2enmod ssl을 입력해 apache가 SSL모듈을 사용하도록 해두자

이제 certfullchain.pemprivatekey.pem를 버츄얼 호스트 파일에 알려주면 된다.
다음의 3줄만 추가하면 된다. 다른 설정도 가능하나, 꼭 해야 하는 설정이 아니므로 생략한다.

도메인이 iam.makerj.com이라고 가정한다

<VirtualHost *:80 *:443>
    ServerName iam.makerj.com

    SSLEngine on
    SSLCertificateFile cert.pem경로
    SSLCertificateChainFile chain.pem경로
    SSLCertificateKeyFile privatekey.pem경로

    ~나머지 설정들~

다 작성했으면, 아파치를 재시작하자. 잘 된다.

'WebDev' 카테고리의 다른 글

s3 sigv4  (0) 2016.03.03
AWS  (0) 2016.03.02
Django Foreign Key  (0) 2016.02.25
Require.js  (0) 2016.02.20
tosync.js  (0) 2016.02.20