SSL PEM 파일 만들기 - SSL PEM pail mandeulgi

게시자 Zevenet | 15 년 2016 월 XNUMX 일

개요

Zen Load Balancer는 HTTPS 연결 (HTTP 프로필)을 관리 할 수 ​​있으므로 시스템 관리자는 자체 인증서 (자체 서명 된 인증서)를 작성하거나 인증 기관에서 서명 된 인증서를 얻어야합니다. 두 경우 모두 인증서를 작성해야합니다 PEM 형식.

보안 인증서는 암호없이 작성해야하며 보호 할 서버에서 키와 CSR을 생성해야합니다.

긍정적 인 SSL은 PEM 형식으로 갈 준비가되어 있지만 각 파일에는 인증서, 중간 CA 및 분리 된 루트 CA가 포함되어 있으므로 빠른 SSL을 변환해야합니다.

요구 사항

서버에 키를 생성하려면 openssl 패키지를 설치해야합니다.이 경우 이미 설치해야하는 Zen Load Balancer 인스턴스가됩니다.

먼저, 암호없이 키를 생성하십시오.

openssl genrsa -out host_domain_com.key 2048

그런 다음 생성 된 키 (.key)를 입력으로 사용하여 인증서 서명 요청 (.csr)을 생성합니다.

openssl req -new -key host_domain_com.key -out host_domain_com.csr

인증서 및 중간 CA 파일이 제공되면 발급자 루트 인증서를 가져와야합니다.

분리 된 모든 파일은 PEM 형식 (서버 인증서, 중간 인증서 및 루트 CA 인증서)이어야합니다. 그렇지 않은 경우 다음 명령을 사용하여 파일을 변환합니다.

openssl x509 -in certFileName.cer -outform PEM -out convertedCertFileName.pem

마지막으로 개인 키, 발급 된 인증서, 중간 인증서 및 루트 CA 인증서가 있습니다. 이러한 모든 파일 내용을 결합하여 UNIX 형식의 PEM 파일을 만들어야합니다.

PEM 형식의 인증서 생성

PEM 인증서는 다음 구조로 만들어야합니다.

-----BEGIN RSA PRIVATE KEY-----
Private Key (without passphrase)
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
Certificate (CN=www.mydomain.com)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate (Intermediate CA, if exists)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Root (ROOT CA, who signs the Certificate)
-----END CERTIFICATE-----

올바른 PEM 구조를 만들려면 위의 단계에서 생성 된 다른 파일 콘텐츠를 분판과 연결해야합니다.

-----BEGIN RSA PRIVATE KEY-----
uiMTxBQnK9ApC5eq1mrBooECgYB4925pDrTWTbjU8bhb/7BXsjBiesBBVO43pDYL
1AOO5EEikir239UoFm6DQkkO7z4Nd+6Ier9fncpN1p1EZtqPxT64nsUTNow/z1Pp
nUVxhqt4DT+4Vp5S7D9FQ+HagbhVInQXKXtT7FNFhpIxpRy512ElSuWvrELiZOwe
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
wYDVR0fBDwwOjA4oDagNIYyaHR0cDovL3JhcGlkc3NsLWNybC5n
ZW90cnVzdC5jb20vY3Jscy9yYXBpZHNzbC5jcmwwHQYDVR0OBBYEFA8nu+rbiNqg
DYmhNE0IgXx6XRHiMAwGA1UdEwEB/wQCMAAwSQYIKwYBBQUHAQEEPTA7MDkGCCsG
gOYD8kmKOsxLRWeZo6Tn8
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
EgYDVR0TAQH/BAgwBgEB/wIBADA6BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3Js
Lmdlb3RydXN0LmNvbS9jcmxzL2d0Z2xvYmFsLmNybDA0BggrBgEFBQcBAQQoMCYw
JAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmdlb3RydXN0LmNvbTANBgkqhkiG9w0B
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy
dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1
jOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh
1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4
-----END CERTIFICATE-----

PEM 전체 파일을 UNIX 형식으로 변환해야합니다.

HTTPS 프로필 팜과 함께 사용하기 위해 테스트 목적으로 zencert.pem이라는 인증서를 사용할 수 있습니다.

GNU Free Documentation License의 조건에 따른 문서.

웹서비스에 https를 적용할 경우, SSL 인증서를 VeriSign이나 Thawte, GeoTrust 등에서 인증서를 발급받아야 하지만, 비용이 발생하므로 스스로 인증기관을 만들어 SSL 인증서를 발급하여 사용하곤 합니다.

Ubuntu 18.04에 OpenSSL이 설치되어있어 스스로 서명한 ROOT CA(Self Signed Certificate)를 생성하여 사용하려고합니다.

OpenSSL

pem과 crt를 발급받는 전체 과정이 포함되어있습니다. 급하신분은 하단 ex. 이후의 스크립트를 복사해서 사용해도 좋습니다.

RSA 개인키 생성

# OpenSSL 접속
$ openSSL

# 접속 후
OpenSSL> genrsa -out [[원하는 경로]]/[[파일명]].key 2048
# ex. genrsa -out /home/ubuntu/workspace/ssl/mockprivate.key 2048

RSA 공개키 생성

OpenSSL> rsa -in [[앞서 생성한 개인키]] -pubout -out [[원하는 경로]]/[[파일명]].key
# ex. rsa -in /home/ubuntu/workspace/ssl/mockprivate.key -pubout -out /home/ubuntu/workspace/ssl/mockpublic.key

CSR(인증요청서) 생성

OpenSSL> req -new -key [[앞서 생성한 개인키]] -out [[원하는 경로]]/[[파일명]].csr
# ex. req -new -key /home/ubuntu/workspace/ssl/mockprivate.key -out /home/ubuntu/workspace/ssl/mock.csr

이것저것 입력하라 나오는데 읽으면서 입력해줍니다.

CA 생성

OpenSSL> genrsa -aes256 -out [[원하는 경로]]/[[CA 이름]].key 2048
# ex. genrsa -aes256 -out /home/ubuntu/workspace/ssl/mockRootCA.key 2048

# 비밀번호 입력
Enter pass phrase for [[원하는 경로]]/[[CA 이름]].key: 

pem 생성

OpenSSL> req -x509 -new -nodes -key [[앞서 생성한 CA Key]] -days 3650 -out [[원하는 경로]]/[[파일명]].pem
# ex. req -x509 -new -nodes -key /home/ubuntu/workspace/ssl/mockRootCA.key -days 3650 -out /home/ubuntu/workspace/ssl/mockRootPEM.pem

'CSR(인증요청서) 생성'때와 유사하게 나라, 지역등을 물어보는데 동일하게 작성하면 됩니다.

CRT 생성

OpenSSL> x509 -req -in [[앞서 생성한 CSR]] -CA [[앞서 생성한 PEM]] -CAkey [[앞서 생성한 CA Key]] -CAcreateserial -out [[원하는 경로]]/[[파일명]].crt -days 3650
# ex. x509 -req -in /home/ubuntu/workspace/ssl/mock.csr -CA /home/ubuntu/workspace/ssl/mockRootPEM.pem -CAkey /home/ubuntu/workspace/ssl/mockRootCA.key -CAcreateserial -out /home/ubuntu/workspace/ssl/mockCRT.crt -days 3650

참고 문서

  • https://www.lesstif.com/system-admin/openssl-root-ca-ssl-6979614.html
  • https://www.hanumoka.net/2020/05/19/security-20200519-make-ssl-crt-for-test-https/