채택완료

Let's Encrypt 인증서 구성은 어떻게 하시나요?

2026-06-21 (일) 08:56:16 280
온프레미스(On-Premises) 서버(리눅스)에 그누보드를 운영하려 기본 구축을 했습니다.
HTTPS 적용하려 Let's Encrypt 인증서를 사용하려고 합니다.

검색해 보니 굳이 유료 인증서 사용을 하지 않아도 될 듯하더군요.
자동 갱신, DNS 인증 방식, 와일드카드 인증서 등의 방법이 다양하던데
실제 운영 중이신 분들은 어떤 방식으로 구성하고 계신지 궁금해 
아렇게 검색으로 방문하여 질문을 드리게 됬습니다.

​​​​​​​자체 서버 환경에서 운영 시 주의할 점
등의 실제 '운영 사례나 구성' 조언 부탁드립니다.
감사합니다.
|

답변 4개 / 댓글 1개

채택된 답변
+20 포인트
2026-06-21 (일) 13:53:38
제가 노트북으로 돌리고 있는 서버는 

외부 도메인
-Nginx Reverse Proxy
-내부 Apache/PHP 그누보드 서버
구성으로

인증서는 유료 인증서 없이 Let's Encrypt로 충분했고
certbot으로 발급했습니다.

자동 갱신은 certbot renew와 Nginx reload hook을 걸어두는 방식으로 구성했습니다.

주의할점은
80/443 포트가 외부에서 정상 접근 가능한지.
프록시 구조라면 실제 인증서는 앞단 Nginx에서 관리하는 게 편함
인증서 갱신 후 nginx reload가 자동으로 되도록 설정
와일드카드는 DNS 인증이 필요해서 단일 도메인이면 HTTP 인증 방식이 더 단순함

이정도입니다. 

답변에 대한 댓글 1개

2026-06-24 (수) 19:58:35
와일드카드 인증, DNS 인증 방안을 찾아보겠습니다.
감사합니다.
2026-06-23 (화) 17:50:20

DVA, 애애드프로 님 말씀이 정확합니다. 요즘 우분투는 certbot이 systemd timer로 자동 갱신을 등록해줘서 따로 cron 안 넣어도 됩니다. 다만 질문자님이 crontab 방식까지 명시하셨으니 순서대로 정리해 드립니다.

1. 아파치 도메인 설정 및 연결 확인

먼저 도메인 A레코드가 서버 공인 IP를 가리키는지 확인합니다.

bash
dig +short example.com


VirtualHost를 잡습니다. `/etc/apache2/sites-available/example.com.conf`:

apache
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/gnuboard
</VirtualHost>


bash
a2ensite example.com.conf
systemctl reload apache2


브라우저로 `http://example.com` 들어가서 그누보드가 정상으로 뜨는지 먼저 확인합니다. 이게 안 되면 SSL부터 넣어봐야 소용없습니다.

2. Certbot 설치

bash
apt update
apt install certbot python3-certbot-apache


3. certbot으로 인증서 발급

아파치 플러그인이 VirtualHost를 읽고 자동으로 잡아줍니다.

bash
certbot --apache -d example.com -d www.example.com


이메일 입력하고, 리다이렉트 여부 물어보면 2번(HTTP→HTTPS 강제 리다이렉트)을 고르면 됩니다.

4. SSL 설정 확인

플러그인이 `example.com-le-ssl.conf`를 자동 생성하고 443 VirtualHost와 인증서 경로를 다 넣어줍니다. 직접 확인/수정하려면 그 파일에서 아래가 들어가 있는지 보시면 됩니다.

apache
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem


5. 접속 테스트

bash
systemctl reload apache2


브라우저로 `https://example.com` 접속, 자물쇠 확인. 그누보드는 추가로 `data/config.php`에서 도메인이 https로 잡히는지, 혼합 콘텐츠(이미지·링크가 http로 나오는 것) 경고 없는지 확인하세요. 외부 검증은 SSL Labs(ssllabs.com/ssltest)에서 A 등급 나오는지 보면 깔끔합니다.

6. 자동 갱신 — crontab 방식

DVA 님 말씀대로 요즘은 설치만 해도 자동입니다. 먼저 확인부터.

bash
systemctl list-timers | grep certbot
certbot renew --dry-run


timer가 이미 등록돼 있으면 crontab은 굳이 안 넣어도 됩니다. 그래도 명시적으로 cron에 넣고 싶으시면:

bash
crontab -e


cron
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload apache2"


새벽 3시에 갱신 체크하고, 갱신되면 아파치를 reload해서 새 인증서를 다시 읽게 하는 설정입니다. `--deploy-hook`이 핵심인데, 갱신만 되고 reload를 안 하면 만료 직전 인증서를 계속 물고 있는 사고가 납니다.

한 가지 주의 — 앞단에 Nginx 리버스 프록시를 두는 구조라면, 인증서는 앞단 Nginx에서 발급·관리하고 내부 아파치는 http로 받는 게 훨씬 깔끔합니다. 그 경우 위 명령에서 `--apache` 대신 `--nginx`(또는 webroot 방식)를 쓰고, 아파치 쪽엔 SSL을 안 거셔도 됩니다. 단일 서버에 아파치만 있다면 위 순서 그대로 가시면 됩니다.

자동 갱신 잘 도는지 한 번 `--dry-run`으로 확인해두는 것만 잊지 마세요. 그게 90일 뒤 사이트 멈추는 사고를 막아줍니다.

저도 처음에 쳇GPT에게 물어서 설치했고 지금은 도사(?)가 되었습니다.^^

라눅스에 let's ssl 설치 방법을 자세히 알려주세요.

아파치 도메인 설정 및 연결확인

Certbot 설치

certbot으로 인증서 발급

SSL 설정

접속 테스트

crontab에 자동 업데이트 설정

우분투 쓰는데요, 옛날에 10년 훨씬전에는 3개월마다 갱신해주는 명령어 따로 넣었어야 했는데, 요즘은 그냥 등록해도 알아서 갱신해주는 방식으로 바꼈더라고요. 우분투 서버만 그런건지는 모르겠지만 암튼 그렇네요.

답변을 작성하려면 로그인이 필요합니다.