이 가이드는 Rocky Linux 8.10에 설치된 Nextcloud 서버에 SSL/TLS를 설정하여 HTTPS를 활성화하는 방법을 설명합니다. SSL은 사용자 데이터의 보안을 보장하며, 특히 Nextcloud와 같은 클라우드 스토리지 플랫폼에서 필수적입니다. Let's Encrypt를 사용하여 무료 SSL 인증서를 발급받고, Apache와 통합하는 과정을 단계별로 다룹니다.
왜 SSL이 필요한가요?
SSL/TLS는 웹사이트와 사용자 간의 데이터를 암호화하여 보안을 강화합니다. Nextcloud에서 SSL을 설정하면:
- 로그인 정보와 파일이 암호화되어 도청 방지.
- 데이터 변조를 방지하여 무결성 보장.
- 브라우저의 "안전하지 않음" 경고를 제거하여 사용자 신뢰도 향상.
Let's Encrypt는 무료로 SSL 인증서를 제공하며, 자동 갱신 기능을 지원해 관리 부담을 줄입니다.
사전 요구사항
- Rocky Linux 8.10에 설치된 Nextcloud (Apache 기반).
- 도메인 이름(예:
your-domain.com)이 서버의 공인 IP를 가리키도록 DNS 설정(A 레코드). - 루트 또는 sudo 권한.
주의: 도메인 없이 로컬 IP(예: 192.168.x.x)로 SSL 인증서를 발급받을 수 없습니다. Let's Encrypt는 도메인 소유권을 확인해야 하므로, DNS 설정이 필수입니다.
1. DNS 설정 확인
도메인(예: your-domain.com 또는 nextcloud.your-domain.com)이 서버의 공인 IP를 가리키는지 확인합니다.
- 도메인 관리 패널(예: GoDaddy, Namecheap)에 로그인.
- DNS 설정에서 A 레코드를 추가:
- 이름:
@또는nextcloud - 값: 서버의 공인 IP (nextcloud 서버의 외부 IP).
- TTL: 기본값(예: 3600초).
- 이름:
- DNS 전파를 확인:
서버 IP가 반환되는지 확인하세요.ping your-domain.com
참고: nextcloud 서버가 내부 네트워크에 있는 경우, 라우터에서 포트 포워딩(80, 443)을 설정하여 공인 IP로 연결되도록 해야 합니다.
2. Certbot 설치
Let's Encrypt 인증서를 발급받기 위해 Certbot과 Apache 플러그인을 설치합니다.
sudo dnf install epel-release -y
sudo dnf install certbot python3-certbot-apache -y
EPEL 저장소는 추가 패키지를 제공하며, python3-certbot-apache는 Apache 설정을 자동으로 수정합니다.
3. SSL 인증서 발급
Certbot을 실행하여 인증서를 발급받습니다. 다음 명령어를 실행하세요:
sudo certbot --apache -d your-domain.com
실행 과정에서 나타나는 프롬프트:
- 이메일 주소 입력: 인증서 갱신 알림을 받기 위한 이메일.
- 약관 동의: Let's Encrypt 이용 약관에 동의(A/Y 입력).
- 마케팅 이메일 수신 여부: 선택 사항(보통 N 입력).
- HTTP에서 HTTPS로 리디렉션 설정: "2" (리디렉션 활성화)를 선택.
Certbot은 도메인 소유권을 확인하기 위해 HTTP 챌린지를 수행하며, 성공 시 인증서를 발급하고 Apache 설정을 업데이트합니다.
팁: 여러 도메인(예: your-domain.com, www.your-domain.com)에 대해 인증서를 발급하려면, -d your-domain.com -d www.your-domain.com을 추가하세요.
4. Apache 설정 확인
Certbot은 자동으로 Apache 설정 파일을 수정하여 SSL을 활성화합니다. 생성된 설정 파일을 확인하세요:
sudo cat /etc/httpd/conf.d/nextcloud-le-ssl.conf
다음과 같은 내용이 포함되어야 합니다:
ServerName your-domain.com
DocumentRoot /var/www/html/nextcloud
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
...
Apache 설정을 테스트하고 적용합니다:
sudo apachectl configtest
sudo systemctl restart httpd
5. 방화벽 설정
HTTPS 포트(443)를 허용하여 SSL 연결을 지원합니다.
sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
sudo firewall-cmd --reload
포트가 열렸는지 확인하세요:
sudo firewall-cmd --list-ports
6. 자동 갱신 설정
Let's Encrypt 인증서는 90일마다 만료되므로, 자동 갱신을 설정합니다. Certbot은 기본적으로 갱신 스크립트를 제공합니다.
갱신 테스트:
sudo certbot renew --dry-run
성공하면, Cron 작업을 추가하여 주기적으로 갱신:
sudo crontab -e
다음 줄을 추가 (매일 자정에 갱신 확인):
0 0 * * * /usr/bin/certbot renew --quiet
또는 systemd 타이머를 사용 (Rocky Linux 기본):
sudo systemctl enable certbot-renew.timer
sudo systemctl start certbot-renew.timer
7. HTTPS 연결 테스트
브라우저에서 https://your-domain.com/nextcloud에 접속합니다.
- 주소창에 자물쇠 아이콘이 표시되면 SSL이 올바르게 설정된 것입니다.
- Nextcloud 대시보드에 정상적으로 로그인되는지 확인하세요.
외부에서 접속이 안 될 경우:
- 방화벽 포트(443) 확인:
sudo netstat -tuln | grep 443. - DNS 설정 확인:
nslookup your-domain.com. - Nextcloud 의 네트워크 설정 확인 (NAT 또는 공인 IP).
문제 해결
SSL 설정 중 발생할 수 있는 일반적인 문제와 해결 방법:
- 오류: "DNS lookup failed" 또는 "Domain not resolving"
- 원인: DNS A 레코드가 잘못되었거나 전파되지 않음.
- 해결:
nslookup your-domain.com으로 IP 확인, DNS 관리 패널에서 A 레코드 재설정.
- 오류: "Connection refused" 또는 "Port 443 not open"
- 원인: 방화벽이 443 포트를 차단.
- 해결:
sudo firewall-cmd --add-port=443/tcp --permanent; sudo firewall-cmd --reload.
- 오류: "Certbot challenge failed"
- 원인: Apache가 실행 중이지 않거나, 80 포트가 차단됨.
- 해결:
sudo systemctl start httpd,sudo firewall-cmd --add-port=80/tcp --permanent.
- 오류: "SSL certificate not applied"
- 원인: Apache 설정 파일 오류.
- 해결:
sudo apachectl configtest로 오류 확인,/etc/httpd/conf.d/nextcloud-le-ssl.conf수정.
'서버 리뷰 > Nextcloud' 카테고리의 다른 글
| Windows VM에서 새 하드 디스크로 Nextcloud 설치 가이드 (0) | 2025.06.08 |
|---|---|
| Windows에서 VM으로 Ubuntu + Nextcloud 구축 가이드 (0) | 2025.06.08 |
| Rocky Linux 8.10에서 Nextcloud 설치 시 주의 사항 (0) | 2025.04.28 |
| Rocky Linux 8.10에서 사설 IP로 Nextcloud SSL 설정 가이드 (대체 포트) (0) | 2025.04.27 |
| Rocky Linux 8.10에서 Nextcloud 설치 및 설정 가이드 (0) | 2025.04.27 |