인증하는 방식은 3가지가 있다.
1. standalone 방식
letsencrypt 가 별도의 웹서버를 띄워 인증하는 방식. 기존 서버를 중지하고 해야 하기 때문에 비효율적임.
와일드카드를 사용할 수 없음
2. webroot 방식
실제 서비스 되고 있는 사이트의 디렉토리내에 특정파일로 검증하는 방식
모든 서브도메인이 하나의 디렉토리를 이용하고 있어야만 함
와일드카드 사용할 수 없음
3. DNS 방식
DNS 레코드에 TXT 타입의 값을 입력하여 해당 도메인의 소유자를 확인하여 인증서를 발급해주는 방식
와일드카드를 사용할 수 있다
인증하기 명령어
[code]
certbot certonly –manual -d *.example.com -d example.com –preferred-challenges dns
[/code]
[code]
Are you OK with your IP being logged?
(Y)es/(N)o: y
[/code]
“Y” 입력
[code]
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
-Nea-txoXaIt4P1L-2BwjzFlcObqPTjgnLojXXXXXX
Before continuing, verify the record is deployed.
[/code]
이 화면이 나오면 아직 엔터를 치면 안된다.
DNS 레코드 세팅 후 해야 한다.
한개가 나올때도 있지만 엔터치면 한개가 더 나올때가 있다. 그럴땐 두개 다 입력해 줘야 한다.
(무슨 이유인지는 잘 모르겠다)
위 문자열을 자신의 dns레코드에 TXT 타입으로 입력한다.
_acme-challenge
: 서브도메인자리에 입력
-Nea-txoXaIt4P1L-2BwjzFlcObqPTjgnLojXXXXXX
: 값입력란에 입력
다 입력하고 난뒤에 저장하고 적용이 되었는지 먼저 확인해 봐야 한다.
https://toolbox.googleapps.com/apps/dig/#TXT/
위 링크로 가서 TXT 항목을 선택한 다음 “_acme-challenge.자기도메인”을 입력하여 값이 제대로 나오는지 확인해 본다.
마지막으로 인증진행화면에서 엔터를 누르면
[code]
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
[/code]
위와 같이 나오면 성공!
nginx 에서 해당 인증서를 추가해 준다.
[code]
server {
listen 443 ssl;
…
…
…
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
[/code]
참고: https://oasisfores.com/letsencrypt-wildcard-ssl-certificate/