다히의 개발일지
[리눅스] ssl 인증서 발급 본문
사실 리눅스 ssl 인증서 발급할 때 도움이 되었던 페이지가 있다.
그걸 따라해봤다고 또 좀 끄적이는 거...? 맞쑵니당! 어차피 나만 들어오거둥요!
웹서비스에 https 를 적용할 경우 ssl 인증서를 발급받아야 하는데 비용이 들기 때문에
openssl을 이용하여 인증기관을 만들고 self signed certificate를 생성하고 발급된 인증서를 통해 https 서비스 제공받을 수 있다.
[ ROOT CA 인증서 생성 ]
- ROOT CA 인증서 생성
openssl genrsa -aes256 -out /etc/pki/tls/private/local-rootca.key 2048
- 개인키 권한 설정 (group 과 other의 permission 제거)
chmod 600 /etc/pki/tls/private/lesstif-rootca.key
-csr 생성을 위해 rootca_openssl.conf 저장
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = local-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 = local 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 = local's Self Signed CA
commonName_max = 64
-인증서 요청
openssl req -new -key /etc/pki/tls/private/local-rootca.key -out /etc/pki/tls/certs/local-rootca.csr -config rootca_openssl.conf
- 10년 짜리 self-signed 인증서 생성 <중요>
openssl x509 -req \ -days 3650 \ -extensions v3_ca \ -set_serial 1 \ -in /etc/pki/tls/certs/lesstif-rootca.csr \ -signkey /etc/pki/tls/private/lesstif-rootca.key \ -out /etc/pki/tls/certs/lesstif-rootca.crt \ -extfile rootca_openssl.conf |
- 확인
openssl x509 -text -in /etc/pki/tls/certs/lesstif-rootca.crt
[ SSL 인증서 생성 ]
- SSL 호스트에서 사용할 RSA 키 생성
openssl genrsa -aes256 -out /etc/pki/tls/private/local.com.key 2048
- 개인키 pass phrase 제거
cp /etc/pki/tls/private/local.com.key /etc/pki/tls/private/local.com.key.enc
openssl rsa -in /etc/pki/tls/private/local.com.key.enc -out /etc/pki/tls/private/local.com.key
-개인키 보안
chmod 600 /etc/pki/tls/private/local.com.key*
-CSR 생성
[ req ]
default_bits = 2048
default_md = sha1
default_keyfile = local-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 의 도메인 이름을 적어준다.
## 멀티 도메인일 경우 *.local.com 처럼 쓸 수 있다.
DNS.1 = www.local.com
DNS.2 = local.com
DNS.3 = *.local.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 = local Inc.
# 부서 입력
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = local SSL Project
# SSL 서비스할 domain 명 입력
commonName = Common Name (eg, your name or your server's hostname)
commonName_default = local.com
commonName_max = 64
- 인증서 요청
openssl req -new -key /etc/pki/tls/private/local.com.key -out /etc/pki/tls/certs/local.com.csr -config host_openssl.conf
-인증서 발급
openssl x509 -req -days 1825 -extensions v3_user -in /etc/pki/tls/certs/local.com.csr \ -CA /etc/pki/tls/certs/local-rootca.crt -CAcreateserial \ -CAkey /etc/pki/tls/private/local-rootca.key \ -out /etc/pki/tls/certs/local.com.crt -extfile host_openssl.conf |
-확인
openssl x509 -text -in /etc/pki/tls/certs/local.com.crt
참고 문헌 : https://www.lesstif.com/pages/viewpage.action?pageId=6979614https://www.lesstif.com/pages/viewpage.action?pageId=6979614
음 근데 지금 헷갈리는 건 WILD CARD 공인 인증서 를 넣어야 하는지 ..의 여부이다.
'다히의 피땀눈물 > ETC' 카테고리의 다른 글
[ 리눅스 ] centOS 버전 별 한글 깨짐 문제 해결 (0) | 2019.09.17 |
---|---|
[리눅스] centOS 버전 별 포트 열기 (0) | 2019.09.17 |
[리눅스] 아파치 No space left on device (0) | 2019.09.17 |
[리눅스] 아파치 톰캣 설치 및 연동 (0) | 2019.09.03 |
Session & Cookie (0) | 2019.06.28 |