무료 SSL 인증서는 방문자와 웹사이트 간의 연결을 암호화하여 비밀번호, 결제 정보, 개인 데이터를 보호합니다. 한 푼도 들이지 않고 약 5분 만에 발급받을 수 있습니다.
요약 — 빠른 버전:
- gethttps.com/app/setup 열기 — 설치 없음, 계정 없음
- 도메인 이름 입력
- 도메인 소유권 검증 (서버에 파일 배치 또는 DNS 레코드 추가)
- 인증서 파일 다운로드
- 서버에 설치 (Nginx, Apache, cPanel, WordPress, IIS)
모든 세부 사항이 포함된 전체 가이드를 이어서 읽으세요.
SSL 인증서가 필요한 이유
시작하기 전에 — 사이트에 정말 SSL이 필요한지 궁금하다면:
- 브라우저가 HTTP 사이트에 “안전하지 않음”을 표시 — Chrome, Firefox, Edge가 주소 표시줄에 경고를 보여줍니다. 방문자가 떠납니다.
- Google이 HTTPS를 순위 신호로 사용 — 2014년부터. HTTP 사이트는 순위가 낮아집니다.
- HTTPS 없이 폼과 로그인은 데이터를 평문으로 전송 — 네트워크의 누구나 비밀번호, 신용카드 번호, 개인 데이터를 읽을 수 있습니다.
- HTTP 페이지는 전송 중 변조 가능 — ISP와 공격자가 페이지에 광고, 추적 코드, 멀웨어를 삽입할 수 있습니다.
- HTTPS는 무료 — 사용하지 않을 이유가 없습니다.
이미 HTTPS를 사용 중이라면 갱신으로 건너뛸 수 있습니다.
무료 SSL 인증서를 받는 4가지 방법
| 방법 | 추천 대상 | 설치 | 자동 갱신 | 시간 |
|---|---|---|---|---|
| GetHTTPS (브라우저) | 누구나 — 설치 불필요, 서버 접근 불필요 | 수동 | 아니오 | 5분 |
| 호스팅 제공자 | cPanel/Plesk가 있는 공유 호스팅 | 자동 | 보통 예 | 2분 |
| Certbot (CLI) | root 접근이 있는 서버 관리자 | 자동 | 예 | 10분 |
| Cloudflare (CDN) | 이미 Cloudflare를 사용하는 사이트 | 자동 | 예 | 5분 |
이 가이드는 **방법 1(GetHTTPS)**에 초점을 맞춥니다. 공유 호스팅, VPS, 전용 서버 등 파일을 업로드할 수 있는 모든 플랫폼에서 작동하기 때문입니다. 다른 방법은 위의 링크를 참고하세요.
방법 1: GetHTTPS (권장 — 어디서나 작동)
사전 준비 사항
- 사용자가 관리하는 서버를 가리키는 등록된 도메인 이름
- 다음 중 하나에 대한 접근 (도메인 검증용):
- 웹 서버의 파일 시스템 — 검증 파일 배치용 (HTTP-01 챌린지)
- 도메인의 DNS 설정 — TXT 레코드 추가용 (DNS-01 챌린지)
- 최신 브라우저 — Chrome, Firefox, Edge 또는 Safari
어떤 챌린지 유형을 사용해야 하나요? 대부분의 사람에게는 HTTP-01이 더 간단합니다. DNS-01은 와일드카드 인증서(
*.example.com)에 필수입니다. 자세한 설명은 HTTP-01 가이드와 DNS-01 가이드를 참고하세요.
1단계: GetHTTPS 열기
gethttps.com/app/setup으로 이동합니다.
GetHTTPS가 브라우저에서 두 키 쌍을 자동으로 생성합니다:
- 계정 키 — Let’s Encrypt 계정을 식별하는 P-256 ECDSA 키 쌍. 모든 ACME 요청에 서명합니다.
- 인증서 키 — SSL 인증서용 키 쌍. 기본 ECDSA P-256(권장) 또는 RSA 2048.
두 키 모두 브라우저에 내장된 Web Crypto API를 사용하여 생성됩니다. 브라우저 메모리에만 존재하며 어떤 서버에도 전송되지 않습니다 — 우리 서버에도요. 이것이 SSL For Free(서버에서 키 생성) 또는 ZeroSSL(방법에 따라 서버 측에서 키를 생성할 수 있음) 같은 도구 대비 핵심 프라이버시 장점입니다.
2단계: 도메인 이름 추가
보호하려는 도메인을 입력합니다:
| 원하는 것 | 입력 내용 | 참고 |
|---|---|---|
| 단일 도메인 | example.com | 가장 기본적인 설정 |
| 도메인 + www | example.com + www.example.com | 대부분의 사이트에 권장 |
| 와일드카드 | *.example.com | 모든 서브도메인 포함; DNS-01 필요 |
| 여러 도메인 | example.com + blog.example.com + shop.example.com | SAN 인증서 |
팁: example.com을 입력하면 GetHTTPS가 www.example.com도 추가하라고 안내합니다(그 반대도). 대부분의 사이트는 두 가지 모두 보호해야 합니다.
3단계: 도메인 검증 완료
Let’s Encrypt가 도메인을 관리하고 있는지 확인해야 합니다. 두 가지 방법 중 하나를 선택합니다:
옵션 A: HTTP-01 챌린지 (더 간단, 대부분에게 적합)
Let’s Encrypt가 토큰을 제공합니다. 웹 서버의 특정 URL에 파일을 배치합니다.
- GetHTTPS가 파일명과 파일 내용(긴 토큰 문자열)을 보여줍니다
- 서버에 파일을 생성합니다:
http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME - 사이트가 이미 HTTPS를 사용하더라도 파일은 **HTTP(포트 80)**를 통해 접근 가능해야 합니다
- GetHTTPS에서 Verify를 클릭합니다
플랫폼별 파일 생성 방법:
SSH 접근 (Linux의 Nginx/Apache):
# 디렉토리 생성 (없는 경우)
mkdir -p /var/www/html/.well-known/acme-challenge/
# 챌린지 파일 생성 — GetHTTPS의 정확한 값 사용
echo "TOKEN_CONTENT_SHOWN_IN_GETHTTPS" > /var/www/html/.well-known/acme-challenge/TOKEN_FILENAME
# 접근 가능한지 확인
curl http://yourdomain.com/.well-known/acme-challenge/TOKEN_FILENAME
cPanel 파일 관리자:
- 파일 관리자 →
public_html로 이동 .well-known폴더 생성 → 그 안에acme-challenge생성- 토큰 파일명으로 새 파일을 만들고 토큰 내용을 붙여넣기
- 파일이 읽기 가능한지 확인 (권한 644)
FTP:
- FTP로 사이트 루트에 연결
.well-known/acme-challenge/로 이동(또는 생성)- 토큰 내용이 포함된 토큰 파일명의 텍스트 파일 업로드
일반적인 문제: 일부 웹 서버는 기본적으로
.well-known의 파일을 제공하지 않습니다. 404 오류가 발생하면 서버 설정을 확인하세요. Nginx에서는 설정에location ~ /\.well-known { allow all; }이 필요할 수 있습니다.
옵션 B: DNS-01 챌린지 (와일드카드에 필수)
도메인의 DNS 설정에 TXT 레코드를 추가합니다.
- GetHTTPS가 레코드 이름(예:
_acme-challenge.example.com)과 레코드 값(긴 해시)을 보여줍니다 - DNS 제공자에서 TXT 레코드를 추가합니다
- DNS 전파를 기다립니다(보통 1-5분)
- GetHTTPS에서 Verify를 클릭합니다
DNS 제공자 빠른 참조:
| 제공자 | TXT 레코드 추가 위치 | TTL 설정 |
|---|---|---|
| Cloudflare | DNS → Records → Add record → Type: TXT | Auto |
| AWS Route 53 | Hosted zones → 도메인 → Create record → TXT | 300 |
| GoDaddy | DNS Management → Add → Type: TXT | 1 Hour |
| Namecheap | Domain List → Manage → Advanced DNS → Add new record → TXT | Automatic |
| Google Domains | DNS → Custom records → Manage → Create new record → TXT | Auto |
| DigitalOcean | Networking → Domains → 도메인 → Add record → TXT | 30 |
레코드 이름: _acme-challenge (일부 제공자는 도메인을 자동 추가하고, 일부는 하지 않음 — 미리보기를 확인)
레코드 값: GetHTTPS에 표시된 해시 문자열 (정확히 복사-붙여넣기)
사전 검사 확인 (GetHTTPS 고유 기능)
Let’s Encrypt에 제출하기 전에 GetHTTPS가 Google의 DNS-over-HTTPS API를 통해 공개 인터넷에서 챌린지 설정을 사전 검사합니다. 다음과 같은 실수를 잡습니다:
- 잘못된 파일 내용이나 권한
- 포트 80에서 파일 접근 불가
- DNS 레코드 아직 전파되지 않음
- 방화벽이 요청 차단
- Cloudflare 프록시가 챌린지 가로채기
사전 검사가 실패하면 GetHTTPS가 정확히 무엇이 잘못되었는지 보여줍니다 — 요청 제한 횟수를 소모하기 전에 수정할 수 있습니다.
이것은 다른 브라우저 기반 도구에 없는 기능입니다. SSL For Free와 ZeroSSL은 CA에 직접 제출하므로, 사후에야 오류를 알 수 있습니다.
4단계: 인증서 파일 다운로드
모든 챌린지가 통과하면 Let’s Encrypt가 인증서를 발급합니다. GetHTTPS가 네 개의 파일을 제공합니다:
| 파일 | 내용 | 필요한 경우 |
|---|---|---|
privkey.pem | 개인키 — 비밀로 유지하세요! | 모든 서버 |
cert.pem | SSL 인증서(최종 엔티티만) | Apache, 일부 설정 |
chain.pem | Let’s Encrypt의 중간 CA 인증서 | Apache, 일부 설정 |
fullchain.pem | cert.pem + chain.pem 결합 | Nginx, 대부분의 서버 |
네 파일 모두 다운로드하세요. 서버마다 다른 조합이 필요합니다 — 네 파일을 모두 가지고 있으면 어디서든 대응할 수 있습니다. 자세한 내용은 인증서 형식 설명을 참고하세요.
보안:
privkey.pem을 안전하게 보관하세요. 이 파일이 있으면 누구나 웹사이트를 사칭할 수 있습니다. 이메일로 보내거나, Git에 커밋하거나, 공개 폴더에 넣지 마세요.
5단계: 서버에 설치
플랫폼을 선택하세요:
| 플랫폼 | 가이드 | 필요한 주요 파일 |
|---|---|---|
| Nginx | 전체 가이드 → | fullchain.pem + privkey.pem |
| Apache | 전체 가이드 → | cert.pem + chain.pem + privkey.pem |
| cPanel | 전체 가이드 → | 세 파일의 내용 붙여넣기 |
| WordPress | 전체 가이드 → | 호스팅에 따라 다름 (cPanel/Nginx/Apache) |
| Windows IIS | 전체 가이드 → | 먼저 PFX로 변환 |
| Docker | 전체 가이드 → | fullchain.pem + privkey.pem 마운트 |
| Plesk | 전체 가이드 → | 세 파일의 내용 붙여넣기 |
| AWS | 전체 가이드 → | EC2에 업로드 또는 ACM으로 가져오기 |
| Node.js | 전체 가이드 → | 코드에서 fullchain.pem + privkey.pem |
빠른 설치 — Nginx:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=63072000" always;
root /var/www/html;
index index.html;
}
sudo nginx -t && sudo systemctl reload nginx
빠른 설치 — Apache:
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/cert.pem
SSLCertificateKeyFile /etc/ssl/privkey.pem
SSLCertificateChainFile /etc/ssl/chain.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
DocumentRoot /var/www/html
</VirtualHost>
sudo apachectl configtest && sudo systemctl reload apache2
6단계: HTTP를 HTTPS로 리다이렉트
모든 트래픽이 암호화된 연결을 사용하도록 강제합니다. 이것이 없으면 http://로 접속하는 방문자는 인증서의 혜택을 받지 못합니다.
Nginx:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Apache (.htaccess):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
www/non-www, 프록시 시나리오, 문제 해결을 포함한 전체 리다이렉트 가이드 →
7단계: 모든 것이 작동하는지 확인
브라우저 확인:
https://yourdomain.com방문- 자물쇠 아이콘 클릭 → “인증서” 또는 “연결이 안전함”
- 확인: 발급자 “Let’s Encrypt”, 약 90일 후 만료, 도메인 일치
커맨드라인 확인:
# 인증서 세부 정보 표시
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
# 예상 출력:
# subject=CN=example.com
# issuer=C=US, O=Let's Encrypt, CN=R10
# notBefore=May 8 00:00:00 2026 GMT
# notAfter=Aug 6 00:00:00 2026 GMT
온라인 확인: SSL Labs Server Test에 도메인을 입력하여 인증서 체인, 프로토콜 지원, 암호화 스위트, 알려진 취약점을 포함한 종합 보고서를 확인합니다.
혼합 콘텐츠 확인: 브라우저 개발자 도구(F12) → 콘솔 탭을 엽니다. “Mixed Content” 경고를 찾으세요 — HTTPS 페이지에 있는 HTTP 리소스입니다. 혼합 콘텐츠 수정 방법 →
갱신
Let’s Encrypt 인증서는 90일 후에 만료됩니다. 안전 여유를 두고 60일째에 갱신하세요.
GetHTTPS로 (수동):
- gethttps.com/app/setup을 다시 방문
- 도메인을 다시 입력하고 새 챌린지 완료
- 서버의 인증서 파일 교체
- 웹 서버 리로드 (
sudo systemctl reload nginx)
Certbot으로 (자동): 자동 갱신을 원하면 서버에 Certbot을 설치하세요. 많은 팀이 첫 인증서는 GetHTTPS로, 이후 자동 갱신은 Certbot으로 합니다.
곧 도래: 47일 인증서. CA/Browser Forum은 2029년까지 최대 인증서 유효 기간을 47일로 줄이기로 결정했습니다. 이것이 의미하는 바 →
방법 2: 호스팅 제공자 (가능한 경우 가장 쉬움)
많은 호스트가 무료 SSL을 포함합니다:
| 호스트 | 활성화 방법 | 자동 갱신 |
|---|---|---|
| Hostinger | hPanel → Security → SSL | ✅ AutoSSL |
| SiteGround | Site Tools → Security → SSL Manager | ✅ |
| Bluehost | My Sites → Security → SSL | ✅ |
| Namecheap | cPanel → SSL/TLS Status | ✅ AutoSSL |
| GoDaddy | cPanel → SSL/TLS (cPanel 호스팅인 경우) | ✅ |
| DigitalOcean | 내장 없음 — Certbot 또는 GetHTTPS 사용 | ❌ |
| AWS | 로드 밸런서용 ACM, EC2용 Certbot | ✅ (ACM) |
호스트가 무료 SSL을 제공하면 사용하세요 — 가장 간단한 방법입니다. 그렇지 않거나 더 많은 제어가 필요하면 GetHTTPS를 사용하세요.
방법 3: Certbot (서버 관리자용)
Certbot은 서버에서 Let’s Encrypt 인증서를 자동화하는 CLI 도구입니다. root 접근이 필요합니다.
# 설치 (Ubuntu)
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 인증서 발급 + Nginx 자동 설정
sudo certbot --nginx -d example.com -d www.example.com
# 자동 갱신이 자동으로 설정됨
sudo systemctl list-timers | grep certbot
방법 4: Cloudflare (프록시 기반 SSL)
Cloudflare를 CDN으로 사용한다면 Universal SSL이 무료로 포함됩니다. 하지만 이해하세요: Cloudflare SSL은 트래픽이 서버가 아닌 Cloudflare 엣지에서 복호화된다는 의미입니다. 괜찮은가요? →
문제 해결
챌린지 파일이 404를 반환
- 경로 확인: 파일은 정확히
/.well-known/acme-challenge/TOKEN에 있어야 합니다 — 하위 디렉토리가 아닌 - 권한 확인: 파일이 웹 서버에서 읽기 가능해야 합니다 (chmod 644)
- Nginx: 설정이 점 파일을 차단하는 경우
location ~ /\.well-known { allow all; }추가 - Cloudflare: HTTP-01 챌린지 중 DNS를 일시적으로 “DNS only”(그레이 클라우드)로 전환
- cPanel:
.well-known이 숨겨져 있지 않은지 확인 — 일부 파일 관리자가 점 디렉토리를 숨김
DNS 레코드를 찾을 수 없음
- 더 기다리세요 — 일부 DNS 제공자는 전파에 5-15분이 걸림
- 레코드 이름 확인:
_acme-challenge여야 합니다(도메인이 추가된 경우와 아닌 경우가 있음 — 제공자에 따라 다름). GetHTTPS의 사전 검사로 확인. - 레코드 유형 확인: CNAME이나 A가 아닌 TXT여야 함
- 수동 확인:
dig TXT _acme-challenge.yourdomain.com +short
“Too many requests” / 요청 제한 오류
Let’s Encrypt는 등록된 도메인당 주당 50개 인증서를 허용합니다. 이 제한에 도달하면:
- 일주일 기다린 후 다시 시도
- 테스트에는 스테이징 환경 사용 (GetHTTPS는 개발 시 기본적으로 스테이징 사용)
- 낭비를 줄이기 위해 제출 전 챌린지를 사전 검사
설치 후 브라우저에 “안전하지 않음” 표시
- 인증서 미설치: 서버 설정이 올바른 파일을 가리키는지 확인
- 혼합 콘텐츠: 페이지가 HTTP 리소스를 로드. 해결 가이드 →
- 리다이렉트 미활성화: HTTP 트래픽이 HTTPS로 리다이렉트되지 않음. 리다이렉트 가이드 →
- 인증서 만료: 만료 확인 →
“인증서 체인 불완전” 오류
Nginx에서 fullchain.pem 대신 cert.pem을 사용하거나 Apache에서 SSLCertificateChainFile이 누락된 경우. 서버가 인증서 체인을 증명하기 위해 중간 인증서가 필요합니다.
GetHTTPS를 다른 무료 도구보다 선택하는 이유
| 기능 | GetHTTPS | ZeroSSL | SSL For Free | Certbot |
|---|---|---|---|---|
| 설치 | 없음 (브라우저) | 없음 (웹) | 없음 (웹) | CLI 설치 필요 |
| 개인키 | 브라우저 생성 (Web Crypto) | ⚠️ 서버 생성 가능 | ⚠️ 서버 생성 | 서버 생성 |
| 무료 인증서 제한 | 무제한 | 3개 | 3개 | 무제한 |
| 와일드카드 (무료) | ✅ | ❌ (유료) | ❌ | ✅ |
| 자동 갱신 | ❌ | ❌ | ❌ | ✅ |
| 사전 검사 | ✅ | ❌ | ❌ | ❌ |
| 오픈소스 | No | No | No | Yes (Apache 2.0) |
| Let’s Encrypt 직접 연결 | ✅ | Via ZeroSSL | Via ZeroSSL | ✅ |
자주 묻는 질문
정말 무료로 SSL 인증서를 받을 수 있나요?
네. Let’s Encrypt는 Mozilla, Google, EFF 등이 후원하는 비영리 인증 기관입니다. 많은 기업이 연간 $50-200에 구매하는 것과 같은 유형인 무료 도메인 검증(DV) 인증서를 발급합니다. 3억 개 이상의 웹사이트가 Let’s Encrypt를 사용하며, 전 세계 CA 시장 점유율 63.9%입니다.
무료 SSL 인증서가 유료만큼 안전한가요?
네. 모든 SSL 인증서 — 무료든 유료든 — 동일한 TLS 암호화를 사용합니다. Let’s Encrypt의 무료 DV 인증서는 DigiCert의 $500 EV 인증서와 동일한 암호화 강도를 제공합니다. 유일한 차이점은 검증 수준(CA가 신원에 대해 확인하는 내용)이지, 암호화가 아닙니다. 상세 비교 →
무료 SSL 인증서의 유효 기간은?
Let’s Encrypt 인증서의 유효 기간은 90일입니다. 이 짧은 유효 기간은 의도된 것으로, 키가 유출되었을 때의 피해를 제한하고 자동화를 장려합니다. 안전 여유를 위해 60일째에 갱신하세요. 참고: 2029년까지 모든 인증서가 47일로 제한됩니다.
SSH/root 접근이 필요한가요?
GetHTTPS에서는 필요하지 않습니다. 다음 중 하나만 있으면 됩니다:
- 웹 서버에 파일 배치 (FTP, cPanel 파일 관리자 또는 다른 방법) — HTTP-01용
- DNS 레코드 추가 (도메인 등록 기관 또는 DNS 제공자) — DNS-01용
접근 권한이 전혀 없다면 호스팅 제공자가 제어판을 통해 무료 SSL을 제공하는지 확인하세요.
무료로 와일드카드 인증서를 받을 수 있나요?
네. GetHTTPS는 DNS-01 챌린지를 사용하여 와일드카드 인증서(*.example.com)를 지원합니다. 이는 많은 경쟁사(ZeroSSL, SSL For Free)가 유료 플랜으로 제한하는 기능입니다. 도메인의 DNS 설정에 대한 접근이 필요합니다.
하나의 인증서로 여러 도메인을 보호할 수 있나요?
네. GetHTTPS에 모든 도메인을 입력하세요 — 인증서당 최대 100개. 이것이 SAN(멀티 도메인) 인증서를 생성합니다. 각 도메인에 대해 별도의 챌린지 검증이 필요합니다.
HTTP-01과 DNS-01 챌린지의 차이점은?
HTTP-01: 서버에 파일을 배치합니다. 더 간단하며, 단일 도메인에 적합. 포트 80 접근이 필요합니다. DNS-01: DNS에 TXT 레코드를 추가합니다. 와일드카드에 필수. 포트 80이 차단되어도 작동합니다. 상세 HTTP-01 가이드 → | DNS-01 가이드 →
인증서가 만료되면 어떻게 되나요?
브라우저가 전체 화면 보안 경고(“연결이 비공개가 아닙니다”)를 표시합니다. 방문자가 안전하게 사이트에 접속할 수 없으며, 검색 엔진이 페이지를 색인 해제할 수 있습니다. 만료 확인 방법 → | 갱신 방법 →
GetHTTPS에서 Certbot으로(또는 그 반대로) 전환할 수 있나요?
네. 인증서 파일은 표준 PEM 형식입니다. GetHTTPS로 첫 인증서를 생성하고 이후 자동 갱신을 위해 Certbot을 설치할 수 있습니다. 또는 처음에 Certbot을 사용하다가 서버 접근 없이 빠르게 재발급이 필요할 때 GetHTTPS로 전환할 수 있습니다. 두 도구는 충돌하지 않습니다.