728x90
반응형
요즘은 SSL 없으면 브라우저에서 “안전하지 않음” 뜨는 게 기본이라, 서버 올리면 거의 첫 필수 작업이 HTTPS 세팅이라고 생각한다.
Let’s Encrypt는 무료고, Certbot만 잘 쓰면 발급/갱신까지 크게 어렵지 않다.
오늘 할 일 요약
- 도메인과 포트 준비(80/443)
- Certbot 설치
- Nginx 적용 or Apache 적용
- 자동 갱신 확인(이거 안 하면 90일 뒤 만료 됨)
시작 전에 체크할 것(이거 안 맞으면 실패)
DNS
- example.com / www.example.com 같은 도메인이 서버 공인 IP를 바라보고 있어야 한다.
- DNS 변경 직후면 전파가 덜 됐을 수도 있음.
포트(방화벽/보안그룹)
- Let’s Encrypt가 도메인 소유 확인을 하려면 보통 80번(HTTP) 로 접속을 시도한다.
- HTTPS 쓰려면 당연히 443번(HTTPS) 도 열어야 한다.
(UFW 쓰는 경우)
sudo ufw allow 80 sudo ufw allow 443 sudo ufw status
웹서버
- Nginx 또는 Apache가 설치되어 있고, 최소한 http://도메인 접속이 되는 상태면 제일 깔끔함.
1. Certbot 설치 (Ubuntu에서는 snap 설치가 제일 무난)
예전엔 apt로도 많이 깔았는데, 요즘은 snap으로 설치하는 방식이 많이 쓰인다.
sudo apt update
sudo apt install -y snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
# 설치 확인
certbot --version
2. Nginx에 SSL 적용하기 (자동 설정이 제일 편함)
2-1) 발급 + Nginx 설정까지 자동으로
sudo certbot --nginx -d example.com -d www.example.com
진행 중에 이런 것들을 물어볼 수 있음.
- 이메일 주소(만료/이슈 알림용)
- HTTP → HTTPS 리다이렉트 걸건 지?(보통 “걸기” 추천)
끝나면 Nginx 설정에 SSL 설정이 자동으로 붙고, 보통 바로 HTTPS 접속이 된다.
# 적용 확인
sudo nginx -t
sudo systemctl reload nginx
2-2) “발급만” 하고 설정은 내가 직접 하고 싶을 때
자동 설정이 싫거나, 설정이 복잡해서 Certbot이 못 건드리게 하고 싶으면 발급만 받는 방식도 있다.
sudo certbot certonly --nginx -d example.com -d www.example.com
발급된 인증서 경로는 보통 아래에 생긴다.
- /etc/letsencrypt/live/example.com/fullchain.pem
- /etc/letsencrypt/live/example.com/privkey.pem
Nginx 수동 설정 예시
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ... 나머지 설정 ...
}
3. Apache에 SSL 적용하기 (이것도 자동 설정 가능)
3-1) 발급 + Apache 설정까지 자동으로
sudo certbot --apache -d example.com -d www.example.com
# 적용 확인
sudo apachectl configtest
sudo systemctl reload apache2
3-2) 발급만 받고 Apache에 수동으로 연결
sudo certbot certonly --apache -d example.com -d www.example.com
Apache VirtualHost(443) 예시 (보통 경로는 vi /etc/httpd/conf.d/ssl.conf)
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# ... 나머지 설정 ...
</VirtualHost>
5. 자동 갱신(renew) 확인
Let’s Encrypt 인증서는 보통 90일이라 자동 갱신이 필수.
갱신 테스트(실제로 갱신하진 않고 시뮬레이션)
sudo certbot renew --dry-run
시스템에 timer가 돌아가는지 확인하고 싶으면
systemctl list-timers | grep certbot
728x90
반응형
'Server' 카테고리의 다른 글
| Tomcat 안에 있는 각 폴더의 의미 (0) | 2024.11.04 |
|---|---|
| 오토 스케일링(Auto Scaling)이란? (0) | 2024.02.13 |
| [Apache] Proxy(Reverse Proxy / Forward Proxy)란? (2) | 2023.12.11 |
| WAS와 웹 서버의 차이점 (0) | 2023.11.22 |
| Polling / long-polling / Web Socket / Sever-Sent Event (Push) 정리 (1) | 2023.11.21 |