https://revi1337.tistory.com/69?category=896753
[OpenSSL] 인증기관(CA)
단계 1: 준비단계 1. CA를 저장 및 관리할 디렉토리폴더 생성 2. CA관리에 필요한 서브디렉토리 생성 - certsdb : 서명된 인증서가 저장됨 - certreqs : CSR(인증서요청파일) 복사본이 저장됨 - crl : CRL(인증
revi1337.tistory.com
전에는 RootCA 와 인증서 발급 요청서를 만들었음. 이번에는 임의의 사용자가 RootCA로부터 인증서를 발급받는 과정을 적어볼 것임.
단계 1: 임의의 사용자 만들기
- 임의의 사용자가 RootCA로부터 인증서를 발급받을 것이기 때문에. user1 폴더를 만들어 사용자 생성(가정)
단계 2: user1의 인증 요청서 만들기
- 결과적으로 RootCA에게 인증서를 발급받을 것이기 때문에 인증서를 요청하는 인증 요청서가 필요함.
- req 커맨드로 인증서요청서를 만들겠다 명시. 개인키에 대한 암호화는 rsa암호화에 키길이 2048로 진행하며, 생성된
개인키는 user1.key라는 이름으로 출력되게 명시하고, 생성된 인증요청서는 user1.csr라는 이름으로 출력되게 함.
- user1에 대한 개인키 패스워드 입력
- 이어서 user1에 대한 개인정보를 입력하는 부분이 나오는데 가상의 인물이라 가정하여 아무렇게 적음.
- 생성된 user1의 개인키를 확인한 사진.
- 생성된 user1의 인증 요청서를 확인한 사진
단계 3: user1의 인증요청서를 RootCA에게 보내기 (가정)
- user1의 인증서를 발급하려면 사전에 생성한 user1의 인증 요청서를 RootCA에게 보내야함.
- cp명령어를 통해 user1의 인증요청서 user1.csr파일을 복사하여 RootCA의 certreqs파일에 복사함으로서 인증요청서를
보냈다고 가정하겠음.
- user1의 인증요청서 user1.csr이 RootCA의 certreqs폴더에 복사된 것을 확인할 수 있음.
단계 4: RootCA로부터 user1에 대한 인증서 발급
- RootCA로 돌아와 user1의 인증요청서 user1.csr에대한 인증서를 발급
- ca 커맨드로 인증서를 발급하겠다 명시하고 config옵션으로 인증 정책을 openssl.cnf에 토대로 생성하겠다고 명시.
그리고 infiles 옵션으로 인증서를 발급할 user1의 인증요청서 user1.csr을 명시.
- user1의 개인키 패스워드가 아닌 RootCA의 개인키 패스워드를 입력.
하지만 user1의 인증 요청서의 stateOrProvinceName 필드와 RootCA의 stateOrProvinceName 필드가 다르기 때문에 오류가 발생. (RootCA의 인증정책 설정파일인 openssl.cnf파일을 손봐야함.)
- openssl.cnf 파일을 보면 인증정책에 stateOrProvinceName필드가 match로 되어있음. 이것을 optional로 바꾸어주어
야 함. match는 꼭 일치해야한다는 뜻이며 optional은 있어도되고 없어도된다는 뜻이고, supplied는 필드값을 꼭 적어
주어야 하지만, 일치할 필요는 없다는 뜻임.
- 즉 아래 openssl.cnf파일을 결론을 내보면 countryName만 RootCA와 일치하면 인증서를 발급해주겠다는 의미가 됨.
- openssl.cnf 파일을 수정 후, 동일하게 인증서를 발급한는 커맨드를 입력.
- 전과는 다르게 정상적으로 인증서 발급 성공. (엄청김 아래 사진은 일부)
- Subject쪽을 보면 countryName만 KR 이고 나머지부분은 달라도 인증서를 발급한 것임. (openssl.cnf 정책파일 확인)
- 또 주의 깊게 봐야할 부분은 CA : FALSE 부분. FALSE로 되어있다는 것은 인증서의 인증서가 아니라 사용자 인증서임을
의미하는것임. (인증기관에 대한 인증서에는 CA : TRUE로 되어있는것을 알아두길 바람.)
- RootCA의 인증서 저장 폴더 certsdb에 들어가보면 user1의 인증서가 정상적으로 발급된 것을 확인할 수 있음.
단계 5: 발급된 인증서를 user1에게 다시 전송 (가정)
- 단계 3에서 user1에 대한 인증 요청서를 RootCA에 보내주었듯 발급한 인증서는 다시 user1에게 보내주어야함.
- 동일하게 cp명령어로 대체
- 결과적으로 user1의 폴더에는 user1의 개인키, 인증요청서, 인증서 3가지가 있으면 성공한 것임.
'Cyrpto > OpenSSL' 카테고리의 다른 글
[OpenSSL] PGP 실습 (0) | 2021.12.09 |
---|---|
[OpenSSL] 인증기관(CA) (0) | 2021.10.21 |
[OpenSSL] 공개키 암호 (0) | 2021.10.17 |
[OpenSSL] 대칭키 암호 (0) | 2021.10.17 |
[OpenSSL] Message Digest (0) | 2021.10.16 |