[Ubuntu 22.04] Let’s Encrypt 사용하여 SSL 인증서 발급
Let’s Encrypt 사용하여 SSL 인증서 발급
2가지의 인증서 발급이있다.
- CertBot (Let’s Encrypt)
- ASP.NET Core - LettuceEncrypt
이 글은 CertBot을 사용하여 인증서를 발급하는 방법을 설명한다.
목차
요약
asp.net core를 docker로 배포하고,
도메인을 연결하고,
SSL 인증서를 발급받아 적용하는 방법을 설명한다.
ASP.NET Core (.NET 7)
1. Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.UseKestrel(); <-- 추가를 할 경우
appsettings.json 파일을 참조한다.
2. appsettings.json
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://+:8001",
"Certificate": {
"Path": "/path/to/cert.pem",
"KeyPath": "/path/to/key.pem"
}
}
}
}
sudo apt-get update
sudo apt-get install certbot
//http 챌린지
sudo certbot certonly --standalone -d {도메인주소} --preferred-challenges http
//DNS-01챌린지 일경우
sudo certbot certonly --manual -d amsomad.site --preferred-challenges dns
// 결과
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/{도메인주소}/fullchain.pem
Key is saved at: /etc/letsencrypt/live/{도메인주소}/privkey.pem
This certificate expires on 2024-02-05.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// _acme-challenge.{도메인주소} TXT 레코드 추가
dig -t TXT _acme-challenge.{도메인주소}
docker run -d -p 80:80 -p 443:443 \
-v /etc/letsencrypt/live/{도메인주소}/fullchain.pem:/path/to/cert.pem \
-v /etc/letsencrypt/live/{도메인주소}/privkey.pem:/path/to/key.pem \
--name aspnetapp-container amsomad/aspnetcorerazerpage:latest
CertBot 설치
sudo apt-get update
sudo apt-get install certbot
인증서 발급
sudo certbot certonly --standalone -d {도메인주소.com} -d {www.도메인주소.com}
–standalone: Certbot이 자체 웹 서버를 사용하여 도메인 소유권을 검증하는 방식을 나타냅니다.
-d: 발급 받으려는 인증서의 도메인을 지정합니다.
다른 웹 서버를 사용하는 경우
다른 웹 서버 (Nginx, Apache 등)가 이미 실행 중이고,
해당 웹 서버를 통해 도메인의 소유권을 검증하고 싶다면,
–nginx 또는 –apache 플러그인을 사용할 수 있습니다.
sudo certbot certonly
--webroot
-w {웹서버 경로}
-d {도메인주소.com}
-d {www.도메인주소.com}
-m {이메일주소}
--agree-tos
--no-eff-email
--non-interactive
–webroot: Certbot이 웹 서버의 루트 디렉토리를 사용하여 도메인 소유권을 검증하는 방식을 나타냅니다.
-w: 웹 서버의 루트 디렉토리 경로를 지정합니다.
-d: 발급 받으려는 인증서의 도메인을 지정합니다.
-m: 이메일 주소를 지정합니다.
–agree-tos: 서비스 약관에 동의합니다.
–no-eff-email: EFF(Electronic Frontier Foundation)에 의해 수집되는 이메일 주소를 거부합니다.
–non-interactive: 인터랙티브 모드를 사용하지 않습니다.
DNS _acme-challenge 레코드 추가
DNS _acme-challenge 레코드를 추가해야한다.
CertBot이 인증서 발급을 위해 DNS _acme-challenge 레코드를 추가하라고 알려주면,
도메인을 관리하는 DNS 서비스에 로그인하여 _acme-challenge 레코드를 추가해야한다.
sudo certbot certonly --manual --preferred-challenges dns -d {'사이트.주소'} -d {'www.사이트.주소'}
결과
Please deploy a DNS TXT record under the name:
_acme-challenge.amsomad.site.
with the following value:
{값}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.www.amsomad.site.
with the following value:
{값}
–manual: Certbot이 자동으로 도메인 소유권을 검증하지 않고, 수동으로 검증하는 방식을 나타냅니다.
–preferred-challenges: 도메인 소유권을 검증하는 방식을 지정합니다.
-d: 발급 받으려는 인증서의 도메인을 지정합니다.
-m: 이메일 주소를 지정합니다.
value 값을 DNS 서비스에 추가한다.
가비아 혹은 후이즈에서 DNS 서비스를 사용하고 있다면,
도메인 관리 페이지에서 TXT 레코드를 추가할 수 있다.
_acme-challenge : M4ZLIJJfbqti6ZSyvycNtfGsi9w3qKufngRvRfXJi54
_acme-challenge.www : Qg_BtcuMnjMKHl3ZWlcG_9Z-Q97iSaq30zdWFFXUw8Y
형태로 추가한다.
인증서 적용
docker run -d -p 8000:8000 -p 8001:8001 -v {서버경로}:{/app/cert.pem} -v /path/to/key.pem:/key.pem --name aspnetapp-container amsomad/aspnetcorerazerpage:latest
Note: 만들고나니 내것이 아니었다.
Leave a comment