X.509 인증서

X.509 인증서란 무엇인가요?

X.509 인증서는 일반적으로 인터넷에서 공개 키 인증 기반(PKI)을 사용하여 공개 키의 소유자를 확인하는 디지털 인증서입니다.

X.509 인증서는 인터넷에서 주로 사용됩니다. HTTPS, SMTPS, FTPS, TLS/SSL, VPN 등과 같은 보안 프로토콜에서 사용되며, 이러한 프로토콜은 민감한 정보를 안전하게 전송하기 위해 인증서를 사용합니다.

예를 들면, 우리가 인터넷 서핑을 할 때, HTTPS 프로토콜은 웹 사이트에서 데이터를 암호화하고 안전하게 전송하기 위해 사용됩니다. 웹 사이트 연결에서 X.509 인증서는 브라우저와 서버 간의 통신을 안전하게 하며, 이를 통해 가짜 사이트로 연결을 가로채거나 입력 데이터를 탈취하는 등의 보안 위협으로부터 사용자 정보를 보호합니다.

(주의: 주소창에 http://로 시작하는 http 프로토콜은 암호화 되지 않기 때문에 입력하는 내용을 가로채거나 가짜 사이트로 연결하도록 할 수 있습니다.)

또한, X.509 인증서는 암호화된 이메일 통신, 전자 서명 등의 다양한 응용 분야에서도 사용됩니다. 인증서는 인터넷과 같은 공개 네트워크에서 안전하게 데이터를 전송하고 인증하는 데 필수적입니다.

X.509 인증서를 사용하여 HTTPS 통신을 암호화 하는 과정 (PKI)

  1. 클라이언트가 HTTPS 사이트에 접속합니다. 이때 클라이언트는 서버에 접속하기 전에 서버의 인증서를 확인합니다.
  2. 서버는 클라이언트에게 X.509 인증서를 제공합니다. 인증서에는 서버의 공개 키와 서버의 식별 정보가 포함되어 있습니다.
  3. 클라이언트는 인증서를 검증합니다. 클라이언트는 인증서에 서명한 인증 기관(Certificate Authority, CA)의 공개 키를 사용하여 인증서의 서명을 확인하고, 인증서의 신원 정보가 서버의 신원 정보와 일치하는지 확인합니다.
  4. 클라이언트는 서버와 공유할 임시 대칭 키를 생성합니다. 이 키는 SSL/TLS 핸드셰이크 과정에서 사용됩니다.
  5. 클라이언트는 생성한 임시 대칭 키를 서버의 공개 키로 암호화하여 서버에게 전송합니다.
  6. 서버는 자신의 개인 키로 클라이언트가 전송한 임시 대칭 키를 복호화합니다.
  7. 이제 서버와 클라이언트는 동일한 대칭 키를 공유하고, 이 키를 사용하여 암호화된 HTTPS 통신을 수행합니다.
  +--------------+        +------------------------+        +-------------------+
  |   Client     |        |     Web Server         |        | Certificate       |
  |              |        |                        |        | Authority (CA)    |
  +--------------+        +------------------------+        +-------------------+
         |                           |                                 |
         | 1. Hello message          |                                 |
         |-------------------------->|                                 |
         |                           | 2. Send SSL certificate         |
         |                           |-------------------------------->|
         |                           |                                 |
         |                           | 3. Verify SSL certificate       |
         |                           |<--------------------------------|
         |                           |                                 |
         | 4. Send encrypted message |                                 |
         |-------------------------->|                                 |
         |                           | 5. Decrypt message              |
         |                           |<--------------------------------|
         |                           |                                 |

이런 방식을 공개 키 암호화 방식이라고 합니다.

PKI는 대개 다음과 같은 요소들로 구성됩니다.

  • 공개 키 및 개인 키: PKI에서는 공개 키와 개인 키를 사용하여 암호화 및 전자 서명을 수행합니다. 공개 키는 인터넷에서 자유롭게 공개되며, 개인 키는 해당 키의 소유자만이 액세스할 수 있습니다.
  • 인증 기관(Certificate Authority, CA): PKI에서는 신뢰할 수 있는 제3자 기관인 인증 기관이 공개 키 인증서를 발급합니다. 이러한 공개 키 인증서는 공개 키와 해당 키의 소유자 신원 정보를 포함하고 있습니다. 클라이언트는 이러한 인증서를 사용하여 서버의 신원을 검증하고, 안전한 통신을 보장합니다.
  • 인증서 저장소: 인증서 저장소는 공개 키 인증서를 저장하는 곳으로, 클라이언트는 인증서 저장소에서 인증서를 검색하고 검증합니다.
  • 인증서 폐지 목록(Certificate Revocation List, CRL): 인증서 폐지 목록은 인증 기관에서 발급한 인증서가 폐기된 경우 해당 인증서를 목록에서 제거하는 역할을 합니다. 클라이언트는 인증서 폐지 목록을 사용하여 폐기된 인증서를 식별하고, 이를 사용하지 않습니다.

공개 키는 데이터를 암호화하거나 디지털 서명의 진위를 확인하는 데 사용되는, (주로 RSA) 알고리즘으로 생성된 상수입니다. 또한, PKI는 사용자와 서버와 같은 개체가 디지털 인증서를 사용하여 안전하게 정보를 교환할 수 있는 기반 프레임워크입니다.

인증서 파일 종류 및 확장자

  • .pem: Privacy Enhanced Mail의 약자로, 텍스트 기반 인코딩 형식으로 다양한 인증서와 개인 키 파일에 사용됩니다. 단수, 혹은 복수의 인증서와 개인 키를 가질 수 있으며 적절한 시작/종료 라인 사이에 위치한다
  • .cer: 인증서 파일의 표준 확장자로, 주로 Windows 운영체제에서 사용됩니다. 일반적으로 Base64 인코딩된 X.509 인증서를 포함하며, 개인 키는 포함하지 않습니다.
  • .crt: 인증서 파일의 확장자로, UNIX 및 Linux 운영체제에서 자주 사용됩니다. 일반적으로 Base64 인코딩된 X.509 인증서를 포함하며, 개인 키는 포함하지 않습니다.
  • .key: 개인 키 파일의 확장자로, 주로 RSA 또는 DSA 키에 사용됩니다.
  • .pfx 또는 .p12: PKCS#12 파일 형식으로, 인증서와 개인 키를 모두 포함합니다. 일반적으로 Windows 및 macOS 운영체제에서 사용됩니다.
  • .jks: Java KeyStore의 약자로, Java 기반 응용 프로그램에서 사용되는 키 저장소 형식입니다.
  • .pem과 .key를 조합한 .cert, .cert.pem, .certificate, .certificate.pem: 일반적으로 개인 키와 인증서를 같은 파일에 저장하기 위해 사용됩니다.

이외에도 인증서와 관련된 파일 형식은 다양하며, 사용하는 인증서 관리 도구에 따라 다를 수 있습니다.

X.509 인증서는 악성 네트워크 위조를 방지하는 이외에도, 인증서가 신뢰할 수 있는 기관에 의해 서명되거나 기타 방법으로 확인되면, 해당 인증서를 보유한 장치는 문서를 확인할 수 있습니다. 또한, 두 번째 당사자와의 통신을 안전하게 유지하기 위해 공개 키 인증서를 사용할 수도 있습니다.

Leave a Comment

Index