본문 바로가기
Tech Notes

SSL 인증서란?

by miracle-tech 2025. 9. 17.
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 인증서 확인하는 방법

  1. Chrome에서 확인:
    • 사이트 접속 → 주소창 🔒 클릭 → "인증서(유효함)" 클릭
  2. 실제로 해보기:
 
 
   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