SSL 인증서

NANA·2023년 10월 27일
0
  • 개인키 : 개인 키는 공개 키 기반 암호화 및 디지털 서명에서 사용되는 중요한 구성 요소입니다. 개인 키는 공개 키와 함께 사용되며, 데이터를 암호화하고 서명하여 보안 통신 및 데이터 무결성을 보호합니다. 개인 키는 공개 키 쌍의 한쪽으로, 공개적으로 공개되어서는 안 되며 비밀로 유지해야 합니다. 개인 키로 인증서를 서명하고 데이터를 암호화하거나 서명하는 데 사용됩니다.
  • 키 저장소 : 키 저장소는 개인 키, 디지털 인증서 및 기타 보안 자격 증명을 안전하게 보관하는 파일 또는 저장소.. 아래에선 PKCS#12 형식으로 처음 생성됨. (.p12, .pfx) 크로스 플랫폼.
  • java 키 저장소 : 자바 플랫폼에서 사용되는 디지털 인증서 및 개인 키를 안전하게 저장하고 관리하는 데 사용되는 파일 형식 / Java 기반 애플리케이션 및 서버에서 사용(.jks)
  • pem파일 : 개인 정보와 인증서를 포함하는 텍스트 기반 파일 형식의 확장자입니다. PEM 형식은 주로 인증서, 개인 키, 인증 기관의 중간 인증서 및 다양한 보안 자격 증명을 포함하는 데 사용됩니다.
  1. 개인키 생성
    openssl을 사용하여 RSA 개인키를 생성 / AES-256 암호화 사용
openssl genrsa -aes256 -out client.key 2048
  1. 인증서 발급을 위해 필요한 정보를 담고있는 인증서 신청 형식 데이터 생성
    openssl req 명령은 OpenSSL을 사용하여 인증서 요청 (Certificate Signing Request, CSR)를 생성
openssl req -x509 -sha256 -new -key client.key -out client.csr

-x509: 이 옵션은 인증서 요청 (CSR)이 아닌 직접 자체 서명된 X.509 디지털 인증서를 생성하도록 OpenSSL에 지시합니다. 즉, 자체 서명된 인증서를 만듭니다.
-sha256: 인증서 서명에 SHA-256 해시 알고리즘을 사용합니다.
-new: 새로운 인증서를 생성하도록 OpenSSL에 지시합니다.
-key client.key: 앞서 생성한 RSA 개인 키 (client.key)를 사용하여 인증서를 생성합니다.
-out client.csr: 생성된 자체 서명된 인증서를 저장할 파일의 경로와 이름을 지정합니다. 위의 명령에서는 "client.csr"로 지정되었으므로 생성된 인증서는 "client.csr" 파일에 저장됩니다.

3.인증요청할 인증서 내용 변경

openssl x509 -sha256 -days 3652 -in client.csr -signkey client.key -out client.crt

openssl x509 명령은 OpenSSL을 사용하여 X.509 디지털 인증서를 생성하거나 변환하는 데 사용됩니다. 위의 명령은 주어진 CSR (Certificate Signing Request) 및 개인 키를 사용하여 X.509 디지털 인증서를 생성하는 데 사용됩니다. 각 옵션의 역할은 다음과 같습니다:

-sha256: 인증서 서명에 SHA-256 해시 알고리즘을 사용합니다.
-days 3652: 인증서의 유효 기간을 설정합니다. 위의 명령에서는 10년(3652일) 동안 유효한 인증서를 생성하도록 지정했습니다.
-in client.csr: CSR 파일 (client.csr)을 입력으로 사용하여 인증서를 생성합니다.
-signkey client.key: CSR에 서명하기 위해 사용할 개인 키를 지정합니다. 이 경우, client.key 파일에 있는 개인 키를 사용하여 CSR를 서명합니다.
-out client.crt: 생성된 X.509 디지털 인증서를 저장할 파일의 경로와 이름을 지정합니다. 위의 명령에서는 "client.crt"로 지정되었으므로 생성된 인증서는 "client.crt" 파일에 저장됩니다.

  1. PKCS #12 형식의 인증서 및 개인 키를 결합하여 PKCS #12 (PFX) 형식의 키 저장소 파일을 생성
openssl pkcs12 -export -name clientcert -in client.crt -inkey client.key -out keystore.p12
  1. PKCS#12 keystore를 Java KeyStore로 변환
keytool -importkeystore -destkeystore clientkeystore.jks -srckeystore keystore.p12 -srcstoretype pkcs12 -alias clientcert
  1. 인증서를 Java trust store에 import 합니다.
keytool -import -noprompt -alias smgrca -keystore clienttruststore.jks -file SystemManagerCA.cacert.pem -storepass password(설정할 비밀번호)

keytool은 Java 키 및 인증서 관리 도구로, 주로 자바 키스토어 (Java Keystore) 파일을 만들고 관리하는 데 사용됩니다. 주어진 명령은 keytool을 사용하여 디지털 인증서를 자바 키스토어에 추가하는 예입니다. 각 옵션과 명령의 역할은 다음과 같습니다:

import: 인증서를 자바 키스토어로 가져오는 명령입니다.
-noprompt: 사용자에게 확인 메시지를 표시하지 않고 진행하는 옵션입니다.
-alias smgrca: 추가할 인증서의 별칭 (Alias)을 지정합니다. 이 별칭은 나중에 인증서를 식별하는 데 사용됩니다.
-keystore clienttruststore.jks: 사용할 자바 키스토어 파일의 경로와 이름을 지정합니다.
-file SystemManagerCA.cacert.pem: 가져올 디지털 인증서 파일의 경로와 이름을 지정합니다.
-storepass password: 자바 키스토어의 저장 암호를 지정합니다. 이 암호는 키스토어를 열 때 필요한 비밀번호입니다.
이 명령을 실행하면 SystemManagerCA.cacert.pem 파일에 포함된 디지털 인증서가 clienttruststore.jks 자바 키스토어 파일에 smgrca 별칭으로 추가됩니다. 이를 통해 해당 인증서를 신뢰할 수 있는 루트 CA로 사용할 수 있습니다. 이 인증서는 보통 웹 서버와의 안전한 통신 (HTTPS)에서 사용되거나 서버 및 클라이언트 간의 상호 인증에 활용됩니다.

profile
일단 나만 알아보면 된다는 마음으로, 작더라도 꾸준히

0개의 댓글