728x90
반응형
OpenSSL을 이용하여 인증기관을 만들고 Self signed certificate를 생성하고 SSL 인증서를 발급해 보자.
인증서는 개인키 소유자의 공개키(public key)에 인증기관의 개인키로 전자서명한 DATA 다.
모든 인증서는 발급기관(CA) 이 있어야 하나 최상위에 있는 인증기관(root ca)은 서명해줄 상위 인증기관이 없으므로 root ca의 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다.
반응형
공개키, 개인키 생성 - CA 가 사용할 RSA key pair
openssl genrsa -aes256 -out private-rootca.key 2048
Enter pass phrase for private-rootca.key: 비밀번호 설정
CSR(Certificate Signing Request) 생성을 위해 openssl.con 파일 생성
vi rootca_openssl.conf
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = private-rootca.key
distinguished_name = req_distinguished_name
extensions = v3_ca
req_extensions = v3_ca
[ v3_ca ]
basicConstraints = critical, CA:TRUE, pathlen:0
subjectKeyIdentifier = hash
##authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = keyCertSign, cRLSign
nsCertType = sslCA, emailCA, objCA
[req_distinguished_name ]
countryName = 국가코드(2글자)
countryName_default = KR
countryName_min = 2
countryName_max = 2
# 회사명 입력
organizationName = 기관명
organizationName_default = betwe
# 부서 입력
#organizationalUnitName = 부서명
#organizationalUnitName_default = betwe
# SSL 서비스할 domain 명 입력
commonName = 도메이몀 (eg, your name or your server's hostname)
commonName_default = betwe.co.kr
commonName_max = 64
CSR 파일 및 crt 파일 생성
openssl req -new -key private-rootca.key -out rootca.csr -config rootca_openssl.conf
10년짜리 self-signed 인증서를 생성
openssl x509 -req -days 3650 -extensions v3_ca -set_serial 1 -in private-rootca.csr -signkey private-rootca.key -out private-rootca.crt -extfile rootca_openssl.conf
RootCA 인증서 확인
openssl x509 -text -in private-rootca.crt
============================================================================================
SSL 인증서 발급
개인키 생성
openssl genrsa -aes256 -out betwe.co.kr.key 2048
SSL 인증서 암호 제거 - 웹서버 구동 시 암호를 입력해야하므로 편의상 제거. 하지만 상관없다면 이 부분은 스킵!
cp -p betwe.co.kr.key betwe.co.kr.key.enc
openssl rsa -in betwe.co.kr.key.enc -out betwe.co.kr.key
CSR 생성
vi ssl_openssl.conf
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = private-rootca.key
distinguished_name = req_distinguished_name
extensions = v3_user
## 인증서 요청시에도 extension 이 들어가면 authorityKeyIdentifier 를 찾지 못해 에러가 나므로 막아둔다.
## req_extensions = v3_user
[ v3_user ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
authorityKeyIdentifier = keyid,issuer
subjectKeyIdentifier = hash
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
## SSL 용 확장키 필드
extendedKeyUsage = serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names]
## Subject AltName의 DNSName field에 SSL Host 의 도메인 이름을 적어준다.
## 멀티 도메인일 경우 *.betwe.co.kr 처럼 쓸 수 있다.
DNS.1 = www.betwe.co.kr
DNS.2 = betwe.co.kr
DNS.3 = *.betwe.co.kr
[req_distinguished_name ]
countryName = 국가코드 (2자리)
countryName_default = KR
countryName_min = 2
countryName_max = 2
# 회사명 입력
organizationName = 회사명
organizationName_default = betwe
# 부서 입력
organizationalUnitName = 부서명
organizationalUnitName_default = betwe
# SSL 서비스할 domain 명 입력
commonName = 도메인
commonName_default = betwe.co.kr
commonName_max = 64
CSR 파일 생성
openssl req -new -key betwe.co.kr.key -out betwe.co.kr.csr -config ssl_openssl.conf
10년짜리 betwe.co.kr 용 SSL 인증서 발급 (서명시 ROOT CA 개인키로 서명)
openssl x509 -req -days 3650 -extensions v3_user -in betwe.co.kr.csr -CA private-rootca.crt -CAcreateserial -CAkey private-rootca.key -out betwe.co.kr.crt -extfile ssl_openssl.conf
SSL 인증서 확인
openssl x509 -text -in betwe.co.kr.crt
728x90
반응형
LIST
'Linux' 카테고리의 다른 글
[Linux] XAMPP을 이용한 APM(Apache + PHP + MariaDB) 구축하기 - Linux 설치 버전 (1) | 2023.02.23 |
---|---|
[Linux] file / type 명령어 사용법 (2) | 2023.02.17 |
[Linux] rename 명령어로 파일명 일괄 변경하기 (2) | 2023.02.12 |
[Linux] 리눅스/라즈베리파이4 외장하드 자동 마운트 설정 (2) | 2023.02.01 |
[Linux] 리눅스/라즈베리파이4 mount 명령어 사용 (6) | 2023.01.31 |