rootCA 인증서 만들기
출처1 : http://sncap.tistory.com/508
출처2 : https://namjackson.tistory.com/24
출처4 : https://www.lesstif.com/pages/viewpage.action?pageId=7635159
출처5 : https://www.lesstif.com/pages/viewpage.action?pageId=6979614
# 루트 인증서 생성!!!!
# 사설 rootCA.key 생성(pw:1234)
openssl genrsa -aes256 -out rootCA.key 2048
# rootCA 인증요청서 CSR 생성하기(우선 conf 파일 생성)
vi rootca_openssl.conf
default_bits = 2048
default_md = sha1
default_keyfile = 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 = Country Name (2 letter code)
countryName_default = KR
countryName_min = 2
countryName_max = 2
# 회사명
organizationName = Organization Name (eg, company)
organizationName_default = Motolies Inc.
# 부서명
#organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default = Condor Project
# SSL domain
commonName = Common Name (eg, your name or your server's hostname)
commonName_default = Motolies's Self Signed CA
commonName_max = 64
openssl req -new -key rootCA.key -out rootCA.csr -config rootca_openssl.conf
# rootCA 인증 받은 인증서 생성
openssl x509 -req -days 13650 -extensions v3_ca -set_serial 1 -in rootCA.csr -signkey rootCA.key -out rootCA.crt -extfile rootca_openssl.conf
# rootCA 인증서 내용 확인
openssl x509 -text -in rootCA.crt
# 루트인증서를 사용한 SSL 인증서 생성
# SSL 용 key 파일 생성
openssl genrsa -out server.key 2048
# SSL 용 CSR 파일 생성(우선 conf 파일 생성)
vi host_openssl.conf
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = 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 의 도메인 이름을 적어준다.
## 멀티 도메인일 경우 *.lesstif.com 처럼 쓸 수 있다.
IP.1 = 10.0.0.1
DNS.1 = www.motolies.com
DNS.2 = motolies.com
DNS.3 = *.motolies.com
[req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = KR
countryName_min = 2
countryName_max = 2
# 회사명 입력
organizationName = Organization Name (eg, company)
organizationName_default = Motolies Inc.
# 부서 입력
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Motolies SSL Project
# SSL 서비스할 domain 명 입력
commonName = {Server IP OR Domain}
commonName_default = 10.0.0.1
commonName_max = 64
openssl req -new -key server.key -out server.csr -config host_openssl.conf
#rootCA의 인증을 받아 인증서 생성(pw:rootCA의 pw 입력)
openssl x509 -req -days 13650 -extensions v3_user -in server.csr -CA rootCA.crt -CAcreateserial -CAkey rootCA.key -out server.crt -sha256 -extfile host_openssl.conf
# SSL 인증서 내용 확인
openssl x509 -text -in server.crt
#crt 파일을 pkcs12 파일로
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name tomcat
#crt 파일을 pfx 파일로
openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx