출처 : http://www.jopenbusiness.com/mediawiki/index.php/OpenSSL
CentOS에서 OpenSSL 설치
yum install openssl
OpenSSL 사용자 매뉴얼
예전에 CA(Certificate Authority)를 구축할 수 있는 Software를 판매한 적이 있었다. 직접 참여를 하지는 않았지만 관여를 하고 있었기 때문에 보안과 인증서에 대해서 공부를 했었다. 그 때 경험이 향후 보안과 관련된 작업을 할 때 여러모로 도움이 많이 되었다.
오픈소스 중에는 OpenSSL이라는 인증서를 만들고 관리할 수 있는 소프트웨어가 있다. 인증서를 생성할 수 있기 때문에 OpenSSL을 사용하면 사설 CA를 구축할 수도 있다. 사설 CA를 구축하는 것은 좀 큰일이고 인증서가 있으면 SSL, TLS 등 보안과 관련된 기본적인 여러가지 기능을 구현할 수 있다.
여기서는 OpenSSL을 사용하여 사설 인증서와 서버 인증서를 생성하는 방법을 알아 보자.
개인키와 사설 인증서 생성
- 2048-bits RSA 키(private.key) 생성
- -des3 : 삼중 DES 암호화 적용
openssl genrsa -des3 -out private.key 2048 #--- 암호 입력 (암호를 반드시 기억하자) |
- 키에서 암호 삭제
openssl rsa -in private.key -out private.pem |
- 서명 정보가 들어 있는 CSR(private.csr) 생성
- CSR : Certificate Signing Request
openssl req -new -key private.key -out private.csr
#--- 키 생성시 입력한 암호 입력
Country Name (2 letter code) [AU]: 국가 (KR)
State or Province Name (full name) [Some-State]: 시/도/군 (Seoul)
Locality Name (eg, city) []: 구/군 (Seoul)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 회사명 (Jopenbusiness)
Organizational Unit Name (eg, section) []: 서버도메인 (www.jopenbusiness.com)
Common Name (eg, YOUR name) []: 이름 (pnuskgh)
Email Address []: 이메일_주소
엔터
엔터
- 인증기관에 인증서 신청시 private.csr 파일의 내용을 복사하여 인증기관에 보낸다.
-----BEGIN NEW CERTIFICATE REQUEST-----
중간 내용 포함
-----END NEW CERTIFICATE REQUEST-----
- 자신이 서명한 인증서 (private.crt) 생성
- -days 3560 : 유효기간을 3650일로 설정
openssl x509 -req -days 3560 -in private.csr -signkey private.key -out private.crt
#--- 키 생성시 입력한 암호 입력
서버 인증서 생성
- Server 인증서 (server.crt) 생성
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3560 -in server.csr -signkey server.key -out server.crt -CA private.crt -CAkey private.key -CAcreateserial
#--- server.key의 암호 입력
#--- private.key의 암호 입력
#--- 서버 인증서 검증
openssl verify -CAfile private.crt server.crt
Client 인증서 생성
- Client 인증서 (client.crt) 생성
openssl genrsa -des3 -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -days 3560 -in client.csr -signkey client.key -out client.crt -CA server.crt -CAkey server.key -CAcreateserial
#--- client.key의 암호 입력
#--- server.key의 암호 입력
#--- Client 인증서 검증
openssl verify -CAfile server.crt client.crt
용어 및 인증서 관리
- CRT, DER, PEM 파일간의 변환
- pem : base64 encoding 형태의 인증서
- der : 바이너리 형태의 인증서
openssl x509 -outform der -in cert.crt -out cert.der
openssl x509 -inform der -in cert.der -out cert.pem
openssl x509 -outform der -in cert.pem -out cert.der
- 용어 설명
- CA(Certificate Authority)
- 인증서를 사용할 때 Public/Private Key를 분배하는 과정의 문제점을 해결하기 위해 필요하며 Certificate을 인증 해주는 역할을 함
- 만약 Certificate에 sign을 한 CA를 믿을 수 있다면(Trusted CA) certificate도 믿을 수 있음
개인키와 공개키 생성
OpenSSL을 사용하여 /etc/mail/certs/ 폴더에 인증서를 만들어 봅시다.
- 개인키와 공개키를 저장하고 관리하기 위한 폴더 생성
cd /etc/mail
mkdir certs
cd /etc/mail/certs
chmod 700 /etc/mail/certs
- 인증을 위한 키(dsa1024.pem)를 만든다.
openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem
- OpenSSL 개인키(mycert.pem, mykey.pem)를 만든다.
openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:Seoul
Locality Name (eg, city) []:Seoul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Jopenbusiness
Organizational Unit Name (eg, section) []:Jopenbusiness
Common Name (eg, YOUR name) []:pnuskgh
Email Address []:메일_주소
ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem
chmod 600 /etc/mail/certs/*
- OpenSSL 공개키를 만든다.
openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem
Country Name (2 letter code) [GB]:KR
State or Province Name (full name) [Berkshire]:Seoul
Locality Name (eg, city) [Newbury]:Seoul
Organization Name (eg, company) [My Company Ltd]:Jopenbusiness
Organizational Unit Name (eg, section) []:Jopenbusiness
Common Name (eg, your name or your server's hostname) []:pnuskgh
Email Address []:메일_주소
chmod 600 /etc/mail/certs/*
'프로그래밍 > 암호화' 카테고리의 다른 글
[암호화] OpenSSL 로 ROOT CA 생성 및 SSL 인증서 발급 (0) | 2023.03.09 |
---|---|
[암호화]openssl 설치 (0) | 2023.03.09 |
[암호화] PKCS 11 Helper 1.0 Code URL (0) | 2023.03.09 |
[암호화] openssl 키 생성, 변환, 확인, 암복호화 (0) | 2023.03.09 |
[암호화] OpenSSL (0) | 2023.03.09 |
댓글