인프라

루트 인증서 개인 인증서 개념정리

소행성왕자 2024. 10. 25. 15:47

인증서 개념정리와 발급하는 과정을 알아보도록 하겠습니다.

개인 인증서발급은  루트 인증서가 이미 발급되어 있는 상태에서 개인 인증서를 발급하는 과정을 보여주고 있습니다.

인증서 종류

  • 루트 인증서 (Root Certificate): 신뢰의 최상위 계층에 있는 인증서입니다. 자체 서명되어 있으며, 다른 인증서의 유효성을 검증하는 데 사용됩니다. 
  • 중간 인증서 (Intermediate Certificate): 루트 인증서와 최종 사용자 인증서 사이에 위치합니다. 
  • 최종 사용자 인증서 (End-user Certificate): 실제 웹사이트나 서비스에서 사용되는 인증서입니다.

인증서 생성과정

  .루트 인증서

  1. 개인키 생성 
  2. 자체 서명된 인증서 생성

  .사용자 인증서

  1. 개인키 생성 인증서 
  2. 서명 요청(CSR) 생성 
  3. 루트 인증서로 CSR에 서명하여 최종 인증서 생성

사용자 인증서 생성 예제

 

인증서 흐름도

 

1. 개인키 생성

개인 키는 데이터를 암호화하고 서명하는 데 사용됩니다. 
예제에서는 2048비트 길이의 RSA 개인 키를 생성합니다.

openssl genrsa -aes256 -out coforwardTemp.key 2048

 

  • openssl genrsa: RSA 개인 키를 생성하는 명령어입니다.
  • -aes256: AES 256비트 암호화를 적용하여 개인 키를 보호합니다. 이 과정에서 암호(passphrase) 입력이 필요합니다.
  • -out coforwardTemp.key: 생성된 개인 키를 coforwardTemp.key라는 파일에 저장합니다.
  • 2048: 키 길이를 2048비트로 설정합니다.

 

2. 개인키에서 암호 제거

개인 키에 설정한 암호를 제거하여 비밀번호 없이 인증서와 키를 사용하고자 할 때 사용됩니다.

openssl rsa -in coforwardTemp.key -out coforward.key

 

  • openssl rsa: 기존 키 파일을 새로운 키 파일로 변환하는 명령어입니다.
  • -in coforwardTemp.key: 암호화된 개인 키 파일을 지정합니다.
  • -out coforward.key: 암호가 제거된 새로운 개인 키 파일을 생성합니다.

 

3. 인증서 서명 요청(CSR) 생성

CSR(Certificate Signing Request)은 인증 기관(CA)에 제출하여 인증서를 발급받기 위한 요청 파일입니다.

openssl req -new -key coforward.key -out coforward.csr -config coforward.cnf

 

  • openssl req -new: CSR을 생성하는 명령어입니다.
  • -key coforward.key: CSR 생성 시 사용할 개인 키 파일을 지정합니다.
  • -out coforward.csr: 생성된 CSR을 coforward.csr 파일로 저장합니다.
  • -config coforward.cnf: CSR에 포함될 정보를 지정하는 설정 파일(coforward.cnf)을 사용합니다. 이 파일에는 일반적으로 조직 이름, 도메인 이름 등 인증서에 포함될 정보가 기재됩니다.

 

4. CSR을 사용하여 인증서 발급 (루트 인증서로 서명)

CSR 파일을 루트 인증서로 서명하여 최종 인증서를 발급합니다. 

이 과정에서는 자체 서명된 루트 인증서가 필요합니다. 서명 후 발급된 인증서 파일은 개인 인증서로 사용할 수 있습니다.

openssl x509 -req -days 1825 -extensions v3_user -in coforward.csr -CA D:\xampp\apache\conf\ssl.crt\rootca.crt -CAcreateserial -CAkey D:\xampp\apache\conf\ssl.key\rootca.key -out coforward.crt -extfile coforward.cnf

 

  • openssl x509 -req: CSR을 인증서로 변환하는 명령어입니다.
  • -days 1825: 발급된 인증서의 유효 기간을 1825일(약 5년)로 설정합니다.
  • -extensions v3_user: 설정 파일에서 v3_user라는 확장을 사용하여 인증서에 특정 권한을 부여합니다. 설정 파일의 [ v3_user ] 섹션에 확장 옵션을 추가하여 세부 권한을 설정할 수 있습니다.
  • -in coforward.csr: 서명할 CSR 파일을 지정합니다.
  • -CA rootca.crt: 루트 인증서 파일을 지정합니다.
  • -CAcreateserial: 시리얼 넘버를 자동 생성하여 rootca.srl 파일에 저장합니다.
  • -CAkey rootca.key: 서명에 사용할 루트 인증서의 개인 키 파일을 지정합니다.
  • -out coforward.crt: 발급된 인증서를 저장할 파일 이름을 지정합니다.
  • -extfile coforward.cnf: 확장 정보를 포함한 설정 파일을 지정합니다.