[ 출처: https://www.fntec.net/ ] [ https://letsencrypt.org/ ]
Letsencrypt 인증서에 도메인 등록하기, 수정하기, 추가하기
처음으로 도메인을 등록하는 경우
Letsencrypt를 설치한 후 처음으로 도메인을 등록하는 방법은 다음과 같습니다.
certbot --apache -d 도메인명
만약 서브 도메인을 하나로 묶어서 등록하고자 하는 경우에는 다음과 같이 '-d 도메인명'를 띄어쓰기로 구분하여 뒤에 열거해줍니다.
복수 도메인 등록시
certbot --apache -d aaa.com -d www.aaa.com -d ko.aaa.com -d en.aaa.com -d ja.aaa.com
참고로 첫번째 도메인이 체인명으로 지정되어 등록되므로 도메인 등록 후 '/etc/letsencrypt/live'에 접속해보면 'aaa.com' 도메인명으로 파일이 생성된 것을 확인할 수 있습니다.
이미 등록한 체인에 도메인을 추가 또는 삭제하는 경우
처음 Letsencrypt에 도메인을 등록할 때와 방법은 매우 비슷합니다. 처음 등록시 'certbot --apache -d 도메인명'와 같은 형식을 취하는데 이미 존재하는 체인에 도메인을 추가 또는 삭제하는 경우에는 'certbot --cert-name 체인명 -d 도메인명'와 같이 입력하면 됩니다.
도메인 추가시 또는 삭제시
certbot --cert-name aaa.com -d aaa.com -d www.aaa.com -d ko.aaa.com -d en.aaa.com -d ja.aaa.com
위의 명령어를 잘 보면 'aaa.com -d aaa.com'와 같이 aaa.com이 2차례 보이는데 이것은 잘 못 입력된 것이 아니라 앞의 aaa.com는 체인명, 뒤의 aaa.com은 도메인명입니다. aaa.com도메인에 인증서를 설정하고 싶다면 잊지말고 도메인 목록 부분에도 넣어줘야 합니다.
도메인명을 입력하는 곳에는 삭제할 도메인은 제거하고 추가할 도메인은 추가해서 이 체인에 등록될 도메인을 모두 적어줘야 합니다. 예를 들어 현재 등록되어 있는 도메인이 aaa.com, www.aaa.com, en.aaa.com인데 en.aaa.com을 삭제하고 ko.aaa.com을 추가하고 싶다면 다음과 같이 실행하면 됩니다.
도메인 추가시 또는 삭제시 예시
certbot --cert-name aaa.com -d aaa.com -d www.aaa.com -d ko.aaa.com
Letsencrypt에 등록된 체인명을 모를 때에는?
'/etc/letsencrypt/live'에 접속해보면 생성된 체인이 디렉토리로 존재하므로 유추할 수 있습니다.
Letsencrypt의 특정 체인에 등록된 도메인 목록을 모를 때에는?
체인명만 알고 있다면 도메인명을 대충 아무거나 넣어서 아래와 같이 명령해봅니다.
certbot --cert-name 체인명 -d 도메인명(대충 입력)
그러면 현재 등록된 도메인명이 이러이러한데 당신은 현재 이러이러한 도메인을 새로 등록하거나 삭제하려고 하는데 맞느냐는 확인을 해오므로 이때 등록된 도메인 목록을 알 수있습니다. 물론 이 질문에는 'NO'라고 대답해야 하겠습니다.
certbot --cert-name aaa.com 와 같이 체인명만 적어주면?
'certbot --cert-name 체인명 -d 도메인명'과 같은 형식으로 Letsencrypt의 도메인을 추가 또는 삭제할 수 있으나 도메인명을 빼고 입력하면 다음과 같은 메세지를 볼 수 있습니다.
What would you like to do?
1: Attempt to reinstall this existing certificate
2: Renew & replace the cert (limit ~5 per 7 days)
이 때 1번을 선택하면 이미 존재하는 인증서를 재설치하게 되고 2번을 선택하면 갱신 또는 대체 작업이 시작되는데 2번 과정은 7일 이내에 최대 5회까지만 가능하므로 주의가 필요합니다.
Letsencrypt 인증서를 체인단위로 삭제하기
Letsencrypt에서는 동일한 인증서를 사용하는 도메인을 하나의 체인으로 묶어서 설정할 수 있는데 더 이상 도메인을 사용하지 않게 되거나 특정 도메인을 다른 서버로 옮기게되어 체인을 통째로 삭제해줘야 하는 상황이 있을 수 있습니다.체인삭제 명령어
다음과 같은 명령어로 간단히 체인을 삭제할 수 있습니다. 실행시 삭제할 것인지를 확인하는 절차는 전혀 없으므로 신중하게 삭제해주시기 바랍니다. 또한, 삭제해도 현재 동작중인 http 서버를 재시작하기 전까지는 인증서가 유효합니다.
체인삭제 명령어
certbot delete --cert-name 체인명
위 명령어를 실행해서 문제없이 삭제된 경우에는 바로 다음과 같은 삭제성공 메세지가 나타납니다.
체인삭제 성공메세지
Deleted all files relating to certificate 체인명.
삭제시 주의사항!
기본적인 삭제방법으 위와 같으나 /etc/httpd/conf.d/ 내에서 도메인별로 SSL 설정을 해준 경우에는 해당 SSL관련 설정을 반드시 삭제해줘야 Letsencrypt 리뉴얼시 또는 http 서버 실행시 문제가 없습니다. 반드시 관련 내용을 삭제 또는 #로 주석처리해주시기 바랍니다.문제요소 확인방법
- certbot renew --dry-run (인증서 갱신문제 확인)
- httpd -t (서버실행 확인)
httpd -t 는 서버설정 파일에 문제가 없는지 테스트해주는 명령어입니다. 에러를 체크해서 문제가 있다면 해결해줍니다.
마지막으로 삭제된 체인을 적용해주고 서버실행상의 문제가 없는지 여부를 확인하기 위해서 서버를 재시작해주면 모든 과정이 종료됩니다.
체인명을 모르면?
/etc/letsencrypt/live 디렉토리에 들어가보면 현재 설정된 모든 체인을 확인할 수 있습니다.삭제되었는지 확인하려면?
/etc/letsencrypt/live 디렉토리에 들어가서 해당 체인명이 삭제되었는지 확인하면 됩니다.
TLS-SNI-01 확인방식 인증서 지원종료에 대해
며칠전 Letsencrypt로부터 다음과 같은 메일이 왔습니다.Your Let’s Encrypt client used ACME TLS-SNI-01 domain validation to issue a certificate in the past 60 days. TLS-SNI-01 validation is reaching end-of-life and will stop working on **February 13th, 2019.**
내용인즉 TLS-SNI-01 방식의 확인을 하는 인증서에 대한 지원이 종료되어 2019년 2월 13일부터 갱신작업이 안되므로 사전에 체크하여 HTTP-01, DNS-01, TLS-ALPN-01 중 하나의 방식을 사용하도록 설정하여 인증서 갱신이 실패하는 일이 없도록 대비하라는 것입니다.
저도 TLS-SNI-01 인증서를 사용중인 걸까요?
사용자의 설정이 없는 없을 경우, Let's Encrypt가 정한 방식으로 갱신이 되는데 과거(최근까지도)에는 TLS-SNI-01가 기본이었습니다. 현재는 TLS-SNI-01를 막아놓아서 선호옵션에 관한 설정을 사용자가 지정하지 않는 한 HTTP-01로 자동 갱신되고 있습니다.때문에 certbot renew를 수동 또는 자동(크론작업)으로 실행할 때 선호옵션을 등록하지 않는 경우, 또는 options-ssl-apache.conf에 아무런 설정을 추가하지 않은 이전 이용자들은 대부분이 TLS-SNI-01로 등록되었을 것이므로 TLS-SNI-01 인증서를 사용하고 있다고 보는 것이 좋습니다. 이는 작년말을 마지막으로 인증서갱신을 하지 않은 사용자의 경우에 한하며 작년말 이후 자동갱신된 이력이 있다면 위에서 언급한 것 처럼 이미 HTTP-01로 자동 갱신되어 있을 것입니다.
TLS-SNI-01를 사용중인지 정확히 알 수 있는 방법은?
이미 등록된 체인에 새로운 도메인을 추가해보면 알 수 있습니다. test.net, www.test.net 도메인이 등록된 인증서에 en.test.net를 추가해보면 그 과정에서 어떤 방식의 인증서인지 다음과 같이 메세지가 나타납니다. ➔ Letsencrypt 도메인 추가하는 방법- Renewing an existing certificate
- Performing the following challenges:
- tls-sni-01 challenge for test.net - 기존 등록 도메인
- tls-sni-01 challenge for www.test.net - 기존 등록 도메인
- http-01 challenge for en.test.net - 현재 추가작업중인 도메인
- Waiting for verification...
TLS-SNI-01이면 어떤 문제가 있나요?
향후 갱신시 http-01 방식으로 전환하여 자동 갱신이 진행되기 때문에 Letsencrypt를 한참전에 설치하고 한번도 업데이트를 해주지 않은 경우를 제외하고는 크게 걱정할 필요가 없습니다.Letsencrypt renew 명령어 동작 테스트
보다 확실하게 문제가 없는지를 확인하고싶다면 다음의 명령어를 실행해보면 됩니다.certbot renew --dry-run위는 renew 명령어로 Letsencrypt 인증서를 갱신할 때 문제는 없는지, 어떤 결과가 발생하는지를 체크하는 renew 시뮬레이션 명령어입니다. 시뮬레이션이므로 renew 가능 기간이 도래하지 않은 상태에서도 사용이 가능합니다. 물론 실제 적용은 안되기 때문에 renew가 진행된것으로 착각해서는 안되며 실제 적용은 향후 별도로 진행해줘야 한다는 점도 잊지 마시기 바랍니다.
아래와 같은 메세지를 확인했다면 갱신에 문제가 없는 것이므로 TLS-SNI-01 인증서 사용에 따른 걱정은 하지 않아도 됩니다.
Congratulations, all renewals succeeded. The following certs have been renewed: (이하 성공한 체인명 목록이 나열되고 옆에 success라고 표기됨)
certbot renew --dry-run에 실패한 경우에는
options-ssl-apache.conf에서 TLS-SNI-01의 사용을 지시하는 옵션을 삭제해줍니다. 또한 크론 등으로 자동갱신을 설정한 경우에도 선호옵션은 삭제해줍니다.오랜기간 Letsencrypt를 업데이트하지 않은 경우에는 이번 기회에 업데이트해주는 것을 권장합니다.
Letsencrypt certbot 설치방법
yum을 사용한 설치는 매우 간단하며 이후 업데이트나 관리가 용이하므로 추천합니다.yum install epel-release
yum install python-certbot-apache설치는 여기까지이며 도메인의 처음 등록, 추가, 삭제에 대한 내용은 다음의 링크에서 정리하여두었으므로 참고해주시기 바랍니다. ➔ Letsencrypt certbot 에서 도메인을 처음 등록, 추가, 삭제하기 설치후 특별히 해줘야할 것은 없으나 로그 생성이 필요없는 경우에는 이 글을 계속해서 읽어내려가시면 됩니다.
처음 도메인 등록시 요구되는 메일주소 입력에 대해
처음 도메인 등록시 약관 동의 과정 직전에 메일주소를 등록할지 여부를 선택할 수 있는데 의무입력은 아니므로 건너뛸 수도 있지만 본인이 빈번하게 체크하는 메일주소를 넣는 것을 강력히 추천합니다.
자주 있는 일은 아니지만 특정한 이슈로 인해 인증서 갱신이 불가능한 상황이 발생하기도 하는데 이러한 내용을 등록된 메일주소로 알려주기 때문입니다. 다음은 최근에 발생한 이슈에 대한 글이므로 참고하시기 바랍니다. ➔ Letsencrypt certbot TLS-SNI-01 지원 중지에 대해
Letsencrypt certbot 관련 로그가 생성되지 않도록 하기
로그는 문제 발생시 해결에 중요한 단서가 될 수 있지만 여러가지 이유로 로그 생성을 원치않는 경우도 있습니다. 그러한 경우에는 Letsencrypt certbot 설치와 관련한 로그 설정을 통해 로그생성을 막을 수 있습니다./etc/httpd/conf.d/ssl.conf 파일의 3가지 로그
/etc/httpd/conf.d/ssl.conf 파일을 열고 다음의 부분을 찾아서 가장 앞쪽에 #를 입력하는 방식으로 주석처리해줍니다.ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
CustomLog logs/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
/etc/letsencrypt/options-ssl-apache.conf 파일의 2가지 로그
/etc/letsencrypt/options-ssl-apache.conf 파일을 열고 다음의 부분을 찾아서 가장 앞쪽에 #를 입력하는 방식으로 주석처리해줍니다.CustomLog /var/log/apache2/access.log vhost_combined
ErrorLog /var/log/apache2/error.log
Letsencrypt certbot 버젼 확인
다음과 같은 명령으로 certbot의 버젼을 확인할 수 있습니다.certbot --version
Letsencrypt certbot 업데이트 방법
yum으로 설치한 경우에는 업데이트도 간단히 수행할 수 있습니다.여느 yum 업데이트와 다른 점은 없으며 아래와 같은 명령어로 업데이트가 가능합니다.
yum update certbot
Letsencrypt 설치후 http를 https로 리다이렉팅 해주는 방법 1
첫번째 방법은 'certbot --apache -d 도메인명'으로 도메인을 등록할 때 마다 리다이렉트를 할지, 말지를 물어오는데 이때 '리다이렉트 하겠다'는 선택을 하면 간단히 리다이렉트가 가능합니다.Letsencrypt 설치후 http를 https로 리다이렉팅 해주는 방법 2
도메인 등록시 선택을 하지 않은 경우, 또는 본인이 직접 리다이렉트시켜주고 싶은 경우에는 VirtualHost 수정을 통해 가능합니다./etc/httpd/conf/ 디렉토리내의 httpd.conf 파일이나 /etc/httpd/conf.d/의 해당 도메인 관련 conf파일을 연 후 VirtualHost 설정 중 도메인 설정 부분 아랫쪽에(DocumentRoot, ServerName, ServerAlias 등의 설정 부분 바로 아래쯤에 적당히) 다음과 같이 입력해줍니다.이 방법은 Rewrite모듈을 사용하므로 반드시 Rewrite모듈이 설치되어있는지 확인하고 설치되지 않은 경우에는 설치후 작업해주시기 바랍니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(test.net|www.test.net)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
'test.net|www.test.net' 부분에 리다이렉팅을 해주고싶은 도메인, 서브도메인을 |로 구분하여 나열해주면 됩니다. 이후 파일을 저장하고 아파치를 재시작해주면 http주소로 접속시 https로 자동 연결되는 것을 확인할 수 있습니다.
혹시라도 https로의 자동연결을 해제해주고 싶다면 위에서 추가한 부분을 삭제하거나 #를 문장 앞에 두어 주석처리해주는 것으로 언제라도 손쉽게 http 주소로 다시 접속되도록 해줄 수 있습니다.
이용자의 PC에 남아있는 캐시 정보로 인해 http로 접속되도록 서버의 설정을 수정해도 일정시간(PC 따라서는 꽤 길어질 수 있음) 접속이 안되어 이용을 못하는 이용자가 있을 수 있으나 이는 서버의 설정 문제가 아닙니다. 이러한 문제를 막기위해서는 https로 자동연결을 해제한 경우에도 https 주소로 접속이 가능한 상태를 한동안 유지해주는 것이 좋습니다.
댓글 없음:
댓글 쓰기