자가 서명 인증서 생성
인증서는 개인키 소유자의 공개키(public key)에 인증기관의 개인키(private key)로 전자서명한 데이터입니다.
모든 인증서는 발급기관(Certificate Authority: CA)가 있어야 하지만 자가 서명 인증서는 서명해줄 상위 인증기관이 없으므로 개인키로 스스로 서명하여 인증서를 만듭니다.
이렇게 스스로 서명한 CA 인증서를 Self Signed Certificate라고 합니다.
1. 개인키 생성
openssl genrsa -des3 -out example.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
.............................................+++++
.........................................................+++++
e is 65537 (0x010001)
Enter pass phrase for example.key:<키암호입력>
Verifying - Enter pass phrase for example.key:<키암호입력>
2. 개인키 권한 변경
개인키 유출 방지를 위하여 group과 other의 permission을 제거합니다.
chmod 600 example.key
3. CSR(요청서) 생성
CSR은 인증서 발급을 위해 필요한 정보를 담고있는 인증서 신청 형식 데이터입니다.
CSR에는 공개키 정보와 인증서가 적용되는 도메인 정보 등을 가지고 있습니다.
개인키를 사용하여 요청서를 생성합니다.
openssl req -new -key example.key -out example.csr
Enter pass phrase for example.key:<키암호입력>
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:<State>
Locality Name (eg, city) []:<city>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<Company>
Organizational Unit Name (eg, section) []:<Section>
Common Name (e.g. server FQDN or YOUR name) []:*.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
4. 인증서 생성시 필요한 설정파일 생성
인증서에 올바른 subjectAlternativeName 확장이 없는 경우 연결이 비공개로 설정되어 있지 않다는 NET::ERR_CERT_COMMON_NAME_INVALID 오류가 발생합니다. (크롬 58버전 이후)
subjectAltName 설정을 위한 파일(example.cnf)을 생성합니다. (호출하는 도메인 명 -> *.example.com)
echo "subjectAltName=DNS:*.example.com,DNS:example.com,DNS:www.example.com" > example.cnf
5. 자가 서명 인증서 (Self Signed Certificate: SSC) 생성
openssl x509 -days 3650 -req -signkey example.key -in example.csr -out example.crt -extfile example.cnf
Signature ok
subject=C = KR, ST = Seoul, L = <State>, O = <Company>, OU = <Section>, CN = *.example.com
Getting Private key
Enter pass phrase for example.key:<키암호입력>
6. 키스토어 생성 (PKCS#12 로 변환)
openssl pkcs12 -export -in example.crt -inkey example.key -out example.keystore -name "example"
Enter pass phrase for example.key:<키암호입력>
Enter Export Password:<암호입력>
Verifying - Enter Export Password:<암호입력>
7. 개인키, 요청서, 인증서 내용 확인 명령어
openssl rsa -text -in example.key # 개인키 내용 확인
openssl req -in example.csr -noout -text # 요청서 내용 확인
openssl x509 -in example.crt -noout -text # 인증서 내용 확인
반응형
'Dev > Etc' 카테고리의 다른 글
트러블 슈팅 툴 (0) | 2021.01.29 |
---|---|
덤프파일 생성방법 (0) | 2021.01.29 |
정규표현식 (0) | 2019.08.04 |
콘솔 창 없이 배치파일 실행하는 방법 (0) | 2019.06.28 |
메소드 체이닝 (Method Chaining) (0) | 2019.06.28 |