Let’s Encrypt, 무료 인증서 Beta

WPU SSL Report

Let’s Encrypt 프로젝트! 드디어 베타서비스가 시작되었습니다. 테스트를 위해 화이트리스트 등록을 하지 않아도 누구나 사용할 수 있으며, 실제 사용해도 됩니다. 페이스북이 골드 스폰서로 추가되었다는 소식도 있습니다. (PHP7 릴리즈 소식도 함께 있네요.) 긴 말보다 직접 설치해 보는 것이 좋습니다.

Entering Public Beta

예전과 달리 설치는 아주 간단하며, 직접 서버 운영한다면 대부분 문제 없으며, 필요한 환경은 설치 안내에 따르면 됩니다. Nginx 경우도 비슷하며, 갱신 내용과 함께 아래 글 참고하세요.

Let’s Encrypt, Nginx

이 글은 아파치의 경우이며, 설치 기준은 다음과 같습니다.

  • Ubuntu 14.04
  • Apache 2.4.17
  • python 2.7 (공식 서비스에서 3.x 버전도 지원한다네요.)

그리고 사용 중인 도메인 Virtual Host 설정 파일이 존재해야 하며, 각 도메인의 설정 파일에 리디렉트(www, ssl 등) 코드가 있다면 삭제하세요. 설치 시 선택할 수 있으므로 letsencrypt가 처리하도록 두는 게 편리합니다.

설치

서버 접근 후 root 계정으로 다음 순서로 처리합니다. (서버 환경은 사용자마다 다양하므로 root 디렉터리처럼 디렉터리나 파일 권한이 변경되지 않는 곳이면 좋겠네요.

# cd /root
# apt-get install git
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto

다음 그림이 처음에 나오며, 그림에는 하나의 도메인만 있지만 서버에 설정한 도메인(Virtual Host)이 더 있다면 모두 나옵니다.

letsencrypt 도메인 선택

방향키와 탭으로 처리하고, 다음 단계로 넘어가서 안내에 따라 선택하면 됩니다. 간단한 내용이므로 어려움 없습니다. 메일 주소를 정확하게 입력하고, 마지막 단계에서 easy 보다 secure 선택이 어차피 사용할 거라면 더 좋을 수 있으며, 사이트 특징에 따라 선택하면 됩니다. 이것이 전부입니다.

설치 후

설치 후 우분투 기준으로 다음 경로에 각각 접근하여 생성, 추가된(심볼 링크) 파일을 확인하세요.

# cd /etc/apache2/sites-available/
# cd /etc/apache2/sites-enabled/

관련 파일(key 등)은 다음 경로에 생성되므로 주의하면 됩니다.

// 생성 경로
# /etc/letsencrypt/live

브라우저에서 사이트를 확인하여 http://, https://, http://www, https://www로 번갈아 결과를 확인하면 됩니다. 다음 링크의 끝 ‘도메인’을 자신의 도메인(예 : abc.com)으로 대체하고 복사하여 브라우저에 입력한 후 세부 내용을 확인해 보세요.

https://www.ssllabs.com/ssltest/analyze.html?d=도메인

크롬 브라우저에서 어떤 때는 녹색 아이콘(Green lock icon)이 나오지만, 회색의 노란 아이콘(Lock icon with yellow warning triangle)이 나와도 걱정하지 마세요. 인증서나 암호화 연결이 올바르지 못한 것이 아니라 각 페이지에 포함된 다른 콘텐츠(이미지 등의 링크)에 의한 크롬 브라우저의 표기 방식입니다. 파이어폭스, IE 등의 브라우저에서도 표현하는 방식이 조금씩 틀립니다. 열쇠 크기가 다르게 하여 구분하는 등.

녹색을 좋아한다면 회색이 나오는 경우의 페이지 소스를 확인하여 http로 시작하는 내부 삽입 콘텐츠를 찾아서 https로 변경하면 됩니다. 대부분 이미지일 가능성이 큽니다.

letsencrypt 크롬브라우저 아이콘

새로 설정하고 싶다면 아래의 순서로 진행하면 됩니다. 계속 반복하지 않는 게 좋습니다.

# cd /root
# cd letsencrypt
# ./letsencrypt-auto

커맨드 라인에서 직접 입력하여 설정하는 방법 등 다른 내용이 있지만, 필요할 때 학습하면 됩니다.

Letsencrypt 인증서는 3개월 단위 갱신입니다. 바로 위의 코드만 입력하면 갱신됩니다.

적용 후

보통 ssl 적용 후 사이트 문제는 스타일과 폰트 등을 외부 링크로 정의했을 때 나타나는데, http:////처럼 변경하면 대부분 해결할 수 있습니다. 워드프레스를 예로 들어 functions.php 파일에서 외부 폰트나 스크립트를 추가하고 있다면 간단하게 다음처럼 처리하면 됩니다.

function foreyes_scripts() {
    // Noto Sans KR (korean) http://www.google.com/fonts/earlyaccess
    wp_enqueue_style( 'noto-font-style', '//fonts.googleapis.com/earlyaccess/notosanskr.css' );
}
add_action( 'wp_enqueue_scripts', 'foreyes_scripts' );

워드프레스만을 기준으로 볼 때 wp-config.php 파일의 다음 코드는 letsencrypt 설정에 따라 적용하면 됩니다. secure 옵션을 정했다면 불필요합니다. 워드프레스의 추가 설정을 원하지 않거나 사이트 전체를 https:// 사용을 원한다면 secure 옵션 선택이 편리합니다.

define( 'FORCE_SSL_LOGIN', true );
define( 'FORCE_SSL_ADMIN', true );

워드프레스를 사용중이며, 기존 콘텐츠(특히 이미지 경로) 표현의 문제가 있을 때, 쿼리 등으로 wp_get_attachment_url 함수를 사용하여 데이터를 출력할 때 등 여러 문제가 발생할 수 있습니다. 하나씩 해결하면 됩니다.

Donate

우리나라에서 이런 프로젝트 또는 문화가 없다는 것이 아쉬운 생각이 듭니다. 그래서인지 이 프로젝트는 ‘인증’에 시달린 우리를 위해 다른 나라에서 기획한 것이 아닐까 생각이 들기도 합니다. 아래 링크 기억해두고 고마움을 표하는 것도 좋습니다. 적더라도.

https://eff.org/donate
https://letsencrypt.org (Donate 이미지)

베타서비스지만 특별한 경우가 아니라면 주저하지 말고, 서버 운영 중이라면 즉시 사용해 보세요.

댓글 10

  1. 이거 사용해보려고 퍼블릭베타 기다리고있었는데 좋은 정보 감사합니다.

  2. 안녕하세요? 이번에 사이트 하나 만들어보면서 SSL 관련해서 기웃거리다가 여기까지 찾아오게 됐습니다. 질문 하나 드려도 될까요?
    현재 리눅스호스팅+워드프레스 형태로 떠 있는 상태인데요, 이 상황에서도 알려주신 방법으로 무리없이 (스스로) SSL을 적용시킬 수 있을까요?

    1. 리눅스 호스팅이 일반적 웹호스팅(Shared Hosting)을 말씀하시는 거죠? 아마 안될 거에요. 서버 root 권한이 있어야 가능한 것으로 파악하고 있습니다. 설치는 초등학생도 가능한 수준입니다.

      호스팅 사업자가 호스팅 사용자를 위해 관련 서비스를 구축한다면 일반 웹호스팅 사용자도 선택적으로 Let’s Encrypt SSL 사용이 가능할 것이며, 그런 날이 곧 오지 않을까 합니다. 국외에서는 발빠르게 움직이는 사업자들이 있다는 것 같습니다.

    2. 신경써 답변해 주셔서 감사합니다. 웹호스팅(Shared Hosting) 서비스가 맞아요. 공유 방식이라서 항상 조심스럽게 움직일 수밖에 없는데, letsencrypt도 예외는 아니었군요.ㅠㅠ 간단해 보여서 마음이 갔는데… 안타깝네요.