단계 1: 준비단계
1. CA를 저장 및 관리할 디렉토리폴더 생성
2. CA관리에 필요한 서브디렉토리 생성
- certsdb : 서명된 인증서가 저장됨
- certreqs : CSR(인증서요청파일) 복사본이 저장됨
- crl : CRL(인증서취소목록)이 저장됨
- private : CA의 개인키(서명키)가 저장됨
3. 인증서 저장을 위한 공인된 DB 생성
- index.txt 목록에 있는 모든 서명된 인증서 파일은 certsdb 디렉토리에 저장됨
- openssl은 index.txt를 이용하여 인증서 발급 현황을 추적할 수 있음
- private디렉토리. 개인키가 저장될 파일은 자기 자신만 볼 수 있어야해서 chmod 로 group과 other 권한 제거
단계 2: 환경설정 (Configuration)
- openssl의 인증서 정책을 설정하는 파일인 openssl.cnf를 CA폴더에 저장
- 단계 1에서 CA디렉토리에 만들어준 디렉토리들은 openssl.cnf파일과 연관되어있어 디렉토리이름을 알맞게 설정한것.
단계 3: CA 생성 (Creating the CA)
CA 키 생성 (개인키, 공개키 (CSR))
req : request라는 뜻. 인증 요청서를 만들 수 있는 커맨드
- new : 인증 요청서를 새로 생성하는 옵션.
- newkey : 공개키와 쌍을 이루는 개인키에 대한 정보를 명시하는 옵션. RSA알고리즘에 키길이는 2048를 사용
- keyout : 생성된 개인키를 private디렉터리 하위에 cakey.pem라는 이름을 저장하겠다라는 옵션
- out : 출력되는 공개키 인증 요청서를 명시하는 옵션.
- config : 사용될 환경설정파일을 명시해주는 옵션.
- 개인키를 만드는 과정. 개인키는 노출되면 안되기 때문에, 암호화해서 저장됨. 그렇게 때문에 사용할 패스워드
(passpharse) 입력란이 나옴
- 만들어진 개인키와 쌍을 이루는 공개키 인증 요청서(careq.pem)를 만드는 과정
- openssl.cnf 파일기반으로 생성.
- 전체 출력 값
- 생성된 개인키 확인.
- 생성된 인증 요청서 확인. 사전에 입력한 개인정보를 기반으로 생성된 것.
- 생성된 인증 요청서를 인증기관으로 보내면 인증기관에서 서명된 인증서를 발급해줌.
CA 생성
인증 요청서를 만들었으니 CA를 만들어주어야함. Root CA를 만들예정.
Root CA는 무조건 신뢰해야하고 최상위 인증기관이기 때문에, 자기 자신이 키를 만들고, 만든 키로 자신의 인증서에 최초로 사인을 해주어야함. (Root의 공개키에 사인을 해줄 사람은 자기 자신 밖에 없음)
ca : 인증서 발급을 위한 커맨드
- create_serial : 인증서 시리얼 번호를 만드는 옵션
- out : 발급될 인증서 파일 이름을 명시하는 옵션
- days : 인증서의 유효기간을 별도로 명시하는 옵션
- keyfile : 서명할때 쓸 개인키를 명시하는 옵션
- selfsign : 루트의 공개키에 서명할 사람은 루트밖에 없음
- extensions : 확장 필드를 명시하는 옵션.
- config : 사용할 설정파일을 명시하는 옵션
- infiles : 서명을 할 인증 요청서를 명시하는 옵션
careq.pem 파일을 디코딩해서 보여준것.
시리얼넘버(Serial Number)와 유효기간(Validity),
인증서를 발급받는 사용자의 정보(Subject),
인증서를발급받는 사용자 공개키ID(Subject Key Identifier), 인증기관ID(Authority Key Identifier)
----사용자 공개키 ID와 인증기관 공개키ID가 같은것은 selfsign을 했기 떄문.
CA : TRUE 이 인증서는 인증기관용 인증서라는 말. False 면 사용자에 발급하는 인증서라는 의미.
- 발급된 인증서 내용 확인
- X.509 버전 3, 시리얼넘버, 사용된 서명알고리즘(SHA1을 사용한RSA), 인증기관(Issuer), 인증서를 발급받는 사용자
(Subject)..등등 확인.. (Issuer와 Subject가 같은 이유는 RootCA이기 때문)
- X509v3 Subject Key Identifier 부분은 Subject(인증서를 발급받는 사용자)의 공개키에 대한 정보
- X509v3 Authority Key Identifier 부분은 Issuer(인증기관)의 공개키에 대한 정보
- Signatue Alorithm(서명 알고리즘) 부분은 인증기관의 개인키로 서명한 Subject의 공개키에 대한 서명값
--Begin Certifiate-- 부분이 진짜 인증서가됨. 이부분을 제외한 모든 부분은 인증서에 대해 디코딩해준것임
'Cyrpto > OpenSSL' 카테고리의 다른 글
[OpenSSL] PGP 실습 (0) | 2021.12.09 |
---|---|
[OpenSSL] 인증기관(CA) Root CA가 사용자에게 인증서 발급 (0) | 2021.11.24 |
[OpenSSL] 공개키 암호 (0) | 2021.10.17 |
[OpenSSL] 대칭키 암호 (0) | 2021.10.17 |
[OpenSSL] Message Digest (0) | 2021.10.16 |