728x90
반응형
간단한 비유
SSL 인증서 = 웹사이트의 신분증
마치 우리가 신분증으로 본인을 증명하듯이, 웹사이트도 "나는 진짜 binance.com이야!"라고 증명하는 디지털 신분증이 SSL 인증서입니다.
🌐 HTTP vs HTTPS의 차이
HTTP://binance.com ← 암호화 없음, 위험
HTTPS://binance.com ← SSL로 암호화됨, 안전
브라우저 주소창을 보면:
- 🔒 자물쇠 아이콘 = SSL 인증서 있음
- ⚠️ 경고 표시 = SSL 문제 있음
📜 SSL 인증서에 담긴 정보들
실제 binance.com의 SSL 인증서를 보면:
인증서 정보:
├── 소유자: Binance Holdings Limited
├── 도메인: *.binance.com, binance.com
├── 발급기관: DigiCert Inc
├── 유효기간: 2023.12.01 ~ 2024.12.01
├── 암호화 방식: RSA 2048-bit
└── 검증 수준: Organization Validated (OV)
🔍 브라우저에서 SSL 인증서 확인하는 방법
- Chrome에서 확인:
- 사이트 접속 → 주소창 🔒 클릭 → "인증서(유효함)" 클릭
- 실제로 해보기:
binance.com 접속 → 🔒 클릭 → 인증서 보기
⚠️ 피싱 사이트는 어떨까?
정상 사이트 (binance.com)
✅ SSL 인증서: DigiCert에서 발급
✅ 도메인 일치: binance.com
✅ 유효기간: 1년
✅ 회사 정보: Binance Holdings Limited
피싱 사이트 (가짜)
❌ SSL 없음: http://binnance.com (자물쇠 없음)
또는
⚠️ 이상한 SSL: Let's Encrypt로 급조한 인증서
⚠️ 도메인: binnance.com (철자 틀림)
⚠️ 회사 정보: 없음 또는 가짜
🛡️ 그래서 SSL 검증이 왜 중요한가?
typescript
// 현재 코드의 문제
if (domain === 'binance.com') {
return 100점; // 하드코딩
}
// 실제로는 이렇게 확인해야 함
if (domain === 'binance.com') {
// 진짜 binance.com인지 SSL로 확인
const ssl = await checkSSL(domain);
if (ssl.issuer === 'DigiCert' && ssl.company === 'Binance Holdings') {
return 100점; // 진짜 바이낸스
}
}
🔧 실제 확인 과정
typescript
// 이런 식으로 실제 SSL 정보를 가져올 수 있음
async function getSSLInfo(domain) {
// 1. https://domain에 접속 시도
const response = await fetch(`https://${domain}`);
// 2. SSL 인증서 정보 확인
const cert = response.connection.getPeerCertificate();
return {
company: cert.subject.O, // "Binance Holdings Limited"
issuer: cert.issuer.CN, // "DigiCert"
validUntil: cert.valid_to, // "Dec 1, 2024"
domain: cert.subject.CN // "binance.com"
};
}
즉, SSL 인증서는 "이 웹사이트가 진짜인지 확인해주는 디지털 신분증"이고, 이를 검증한다는 것은 "신분증을 자세히 들여다보고 위조 여부를 확인하는 것"입니다!
728x90
'Tech Notes' 카테고리의 다른 글
| Prisma + Neon: 현대적인 풀스택 개발을 위한 완벽한 조합 (1) | 2025.09.18 |
|---|---|
| Google Safe Browsing이란? 웹 보안의 숨은 영웅 🛡️ (0) | 2025.09.17 |
| Auth 서비스 비교 (0) | 2025.09.16 |
| OAuth 2.0플로우차트 (0) | 2025.09.16 |
| React에서 무한 루프 발생 원인 (0) | 2025.09.11 |