임베디드 관련 카테고리/보안

CA 키와 인증서 생성하기: 신뢰 기반 인증서 발급의 첫걸음

CBJH 2024. 12. 5.
728x90
반응형

1. CA 키와 인증서 생성하기

CA 키와 인증서는 신뢰 기반 인증의 핵심입니다. OpenSSL을 사용하면 간단히 생성할 수 있습니다.

CA 키 생성

openssl genrsa -out ca.key 2048
  • ca.key: CA의 개인 키 파일.
  • 2048: 키의 길이를 지정합니다. 일반적으로 2048 비트를 사용하며, 더 강한 보안을 원하면 4096 비트를 사용할 수도 있습니다.

CA 인증서 생성

openssl req -new -x509 -key ca.key -sha256 -days 3650 -out ca.crt
  • -new: 새 인증 요청을 생성.
  • -x509: 자체 서명(Self-signed) 인증서를 생성.
  • -key ca.key: 위에서 생성한 CA 개인 키를 사용.
  • -sha256: SHA256 해시 알고리즘 사용.
  • -days 3650: 인증서 유효 기간을 10년(3650일)로 설정.
  • -out ca.crt: 생성된 CA 인증서를 저장할 파일명.

입력 예시

인증서를 생성할 때 나타나는 입력 프롬프트 예시는 아래와 같습니다. (적절한 값을 입력하세요.)

Country Name (2 letter code) [AU]: KR
State or Province Name (full name) [Some-State]: Seoul
Locality Name (eg, city) []: Gangnam
Organization Name (eg, company) [Internet Widgits Pty Ltd]: MyCompany
Organizational Unit Name (eg, section) []: IT
Common Name (e.g. server FQDN or YOUR name) []: mycompany.com
Email Address []: admin@mycompany.com
  • Country Name: 국가 코드. 대한민국은 KR.
  • State or Province Name: 시/도 이름. 예: Seoul.
  • Locality Name: 도시명. 예: Gangnam.
  • Organization Name: 조직 이름. 예: MyCompany.
  • Organizational Unit Name: 부서 이름. 예: IT (빈칸으로 두어도 무방).
  • Common Name: 도메인 이름 또는 본인 이름. 서버라면 도메인 주소를 입력. 예: mycompany.com.
  • Email Address: 관리 이메일. 예: admin@mycompany.com.

2. 클라이언트 인증서와 키 생성하기

서버와 클라이언트 간의 안전한 통신을 위해 클라이언트도 자신의 키와 인증서를 가져야 합니다.

클라이언트 키 생성

openssl genrsa -out user.key 2048
  • user.key: 클라이언트 개인 키 파일.

클라이언트 인증서 서명 요청 (CSR) 생성

openssl req -new -key user.key -out user.csr
  • user.csr: 클라이언트 인증서를 발급받기 위해 생성하는 요청 파일.

클라이언트 인증서 서명 (CA로 서명)

openssl x509 -req -in user.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out user.crt -days 365 -sha256
  • -req: 클라이언트 CSR 파일을 읽어옵니다.
  • -CA ca.crt: CA 인증서로 서명합니다.
  • -CAkey ca.key: CA 개인 키를 사용합니다.
  • -CAcreateserial: CA 시리얼 번호 파일 생성.
  • -out user.crt: 생성된 클라이언트 인증서를 저장합니다.
  • -days 365: 클라이언트 인증서 유효 기간을 1년으로 설정.

3. 인증서 파일들의 역할

CA 키 (ca.key)

CA(인증 기관)의 개인 키로, 인증서를 서명하는 데 사용됩니다. 비공개로 철저히 보호해야 합니다.

CA 인증서 (ca.crt)

신뢰의 기반이 되는 인증서입니다. 클라이언트와 서버는 이 파일을 사용해 신뢰 관계를 형성합니다.

클라이언트 키 (user.key)

클라이언트의 개인 키로, 클라이언트 인증과 데이터 암호화에 사용됩니다.

클라이언트 CSR (user.csr)

클라이언트가 CA에게 인증서를 발급받기 위해 제출하는 요청 파일입니다.

클라이언트 인증서 (user.crt)

CA가 서명한 클라이언트 인증서로, 서버와의 통신 시 클라이언트가 신뢰할 수 있는 엔터티임을 증명합니다.


클라이언트 인증서를 CA로 서명하는 이유

  1. 신뢰 형성: 클라이언트 인증서가 CA의 서명을 통해 신뢰받을 수 있게 됩니다.
  2. 보안 강화: 클라이언트 인증서는 CA의 서명을 통해 무결성을 보장합니다.
  3. 서버 인증: 서버는 클라이언트의 인증서를 검증해 클라이언트의 신원을 확인합니다.

4. 결과 파일 정리

  • ca.key: CA 개인 키.
  • ca.crt: CA 인증서.
  • user.key: 클라이언트 개인 키.
  • user.crt: 클라이언트 인증서.
  • user.csr: 클라이언트 인증서 요청 파일 (생성 후 불필요).

이 과정은 클라이언트와 서버 간의 안전한 통신 및 신뢰 기반 인증을 위한 필수적인 준비 단계입니다. OpenSSL을 통해 각 단계를 차근차근 따라가 보세요!

댓글