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로 서명하는 이유
- 신뢰 형성: 클라이언트 인증서가 CA의 서명을 통해 신뢰받을 수 있게 됩니다.
- 보안 강화: 클라이언트 인증서는 CA의 서명을 통해 무결성을 보장합니다.
- 서버 인증: 서버는 클라이언트의 인증서를 검증해 클라이언트의 신원을 확인합니다.
4. 결과 파일 정리
- ca.key: CA 개인 키.
- ca.crt: CA 인증서.
- user.key: 클라이언트 개인 키.
- user.crt: 클라이언트 인증서.
- user.csr: 클라이언트 인증서 요청 파일 (생성 후 불필요).
이 과정은 클라이언트와 서버 간의 안전한 통신 및 신뢰 기반 인증을 위한 필수적인 준비 단계입니다. OpenSSL을 통해 각 단계를 차근차근 따라가 보세요!
'임베디드 관련 카테고리 > 보안' 카테고리의 다른 글
Python으로 WebSocket 클라이언트-서버 통신 설정 및 SSL 인증 완벽 구현하기 (0) | 2024.12.06 |
---|
댓글