
방법: CSR, 자체 서명 및 CA 인증서 생성
2022-10-09 last update
5 minutes reading security certificat ssl tlsPlease make sure you have openssl installed on your machine, or:
Ubuntu: apt-get install openssl
Redhat: yum install -y openssl
CSR(인증서 서명 요청)
SSL 인증서를 주문하기 전에 서버에서 CSR을 생성하는 것이 좋습니다.
각 도메인에 대해 openssl cli의 반복을 피하기 위해 아래 스크립트를 사용하면 도메인 이름을 agr로 전달하는 것만으로 CSR 및 키를 생성할 수 있습니다.
이 스크립트는 두 개의 파일을 생성합니다:
.csr
: SSL 인증서를 구매하기 위해 CertProvider로 보내집니다. .key
: 서버가 클라이언트의 검증을 위해 데이터를 암호화하고 패키징하는 데 사용하는 개인 키입니다.$ vi csr-key-generator.sh
---
#!/usr/bin/env bash
DOMAIN=$1
if [ -z "$1" ]; then
echo "USAGE: $0 domain.com"
exit
fi
# CSR Attributs, there is a possibility for CertProvider can change information(company, locality..) before issue the certificate.
SUBJ="
C=MA
ST=ST
O=My Company
localityName=City
commonName=$DOMAIN
organizationalUnitName=IT
[email protected]
"
# Generate CSR & Private Key
openssl genrsa -out "$DOMAIN.key" 2048
openssl req -new -subj "$(echo -n "$SUBJ" | tr "\n" "/")" -key "$DOMAIN.key" -out "$DOMAIN.csr"
echo "done! enjoy"
셸 파일에 실행 기능을 추가하고 실행합니다.
$ chmod +x csr-key-generator.sh
$ ./csr-key-generator.sh domain.com
output: done! enjoy
$ ls
domain.com.csr domain.com.key
CA(인증 기관)
CA는 인터넷에서 신원을 확인하기 위해 디지털 인증서를 발급하는 기관입니다.
$ openssl req -x509 -sha256 -days 356 -nodes
\ -newkey rsa:2048
\ -subj "/CN=root.com/C=MA/L=Locality"
\ -keyout rootCA.key -out rootCA.crt
자체 서명 인증서
목적지:
## Use previous CSR,Key:
$ openssl x509 -req -days 365 -in domain.com.csr
\ -signkey domain.com.key -out domain.com.crt
[OR]
## Use previous CA:
$ vi extCert.conf
---
subjectAltName = DNS:*.domain.com
$ openssl x509 -req -in domain.com.csr
\ -CA rootCA.crt -CAkey rootCA.key -CAcreateserial
\ -out demo.domain.com.crt -days 365 -sha256
\ -extfile extCert.conf
인증서 검토
$ openssl x509 -in domain.com.crt -text -noout