프로그램 자료/인증서

rootCA 인증서 만들기

motolies 2018. 10. 11. 17:29

출처1 : http://sncap.tistory.com/508

출처2 : https://namjackson.tistory.com/24

출처3 : https://blog.hangadac.com/2017/07/31/%ED%99%88%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%EA%B8%B0-ssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%97%B0%EC%8A%B5/

출처4 : https://www.lesstif.com/pages/viewpage.action?pageId=7635159

출처5 : https://www.lesstif.com/pages/viewpage.action?pageId=6979614



rootCA인증서만들기.pdf



# 루트 인증서 생성!!!!

# 사설 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