SSL 인증서를 생성하는 것은 겁을 먹게 만들 수 있는 작업이며, 좌절과 슬픔으로 가득한 작업입니다. 하지만 그렇게 될 필요는 없습니다! Windows 10과 OpenSSL이 있으며 이 튜토리얼의 도움을 받으면 길을 잘 찾을 수 있습니다.
이 문서에서는 Windows 10에 OpenSSL을 설치하는 방법을 배우고, 설치 후 SSL 인증서를 생성하고, 인증서를 문제 해결 및 디버그하며, 형식 간 변환하는 방법을 배우게 됩니다.
자, Windows 10에서 PowerShell로 OpenSSL을 마스터해 봅시다!
관련 정보: Windows 인증서 관리자 및 PowerShell로 인증서 관리하기
사전 조건
이 문서에서는 실습 중심으로 학습하게 됩니다. OpenSSL은 주로 Linux 운영체제에서 사용되는 유틸리티이지만 Windows 운영체제에서도 사용할 수 있습니다.
- A Windows system with Local Administrator rights – The tutorial will be using Windows 10
- Windows PowerShell 5.1(Windows에 기본으로 제공됨) 또는 PowerShell 7
- Windows용 패키지 관리자인 Chocolatey가 설치되어 있어야 합니다.
- PowerShell ISE, Visual Studio Code 또는 기타 텍스트 편집기
이 가이드의 모든 스크린샷은 Windows 10 빌드 1909와 PowerShell 7에서 촬영되었습니다.
PowerShell과 Chocolatey를 사용하여 Windows 10에 OpenSSL 설치하기
Chocolatey를 설치했다고 가정하고, 첫 번째 작업은 Windows 10에 OpenSSL을 설치하는 것입니다. 이를 위해 PowerShell 콘솔을 열고 아래와 같이 choco install OpenSSL.Light
명령을 실행하십시오.

그것으로 OpenSSL을 PowerShell에 설치했습니다.
작업 디렉토리 설정
이 튜토리얼에서는 몇 개의 인증서를 생성하여 학습할 것입니다. 여기에서 수행하는 모든 작업이 나중에 정리할 수 있는 단일 폴더에 제한되도록 하기 위해 폴더를 먼저 생성하십시오.
이 튜토리얼에서는 모든 인증서 및 관련 파일을 C:\certs 폴더에 저장합니다. PowerShell에서 아래 명령을 실행하여 폴더를 생성할 수 있습니다.
이제 OpenSSL을 구성해야 합니다.
OpenSSL 구성
기본적으로 Windows 10의 OpenSSL에는 구성 파일이 포함되어 있지 않습니다. 이것은 사용자가 보안 요구에 가장 잘 맞게 나중에 사용자 정의할 수 있는 많은 구성 옵션이 있기 때문에 의도된 것입니다.이 가이드의 목적을 위해 보안 요구에 가장 잘 맞도록 나중에 사용자 정의할 수 있는 샘플 구성을 사용할 것입니다.
PowerShell을 열고 아래 명령을 실행하십시오. 이 명령은 MIT에서 샘플 구성 파일을 다운로드하고 현재 작업 디렉토리에 openssl.cnf로 저장합니다.
이제 openssl.cnf 파일을 열면 아래와 같은 내용이 표시됩니다.

다운로드 된 구성은 현재 그대로 작동합니다. 제품 환경에서 기본값을 사용하지 마십시오!
PowerShell 프로필 환경 변수 업데이트
작업을 원활하게 하기 위해 Windows 10에서 PowerShell 프로필을 수정해야 합니다. 일부 환경 변수를 설정하면 설치한 OpenSSL의 다른 버전 간에 쉽게 전환할 수 있습니다.
I suggest adding two environment variables to your PowerShell profile called path
and OPENSSL_CONF
. You will update the PATH
environment variable to ensure you can run the openssl binary in any location while on the command line.
아래에서 이미 프로필이 없다면 PowerShell 프로필을 만드는 방법을 확인할 수 있습니다. 이 명령은 OpenSSL 이진 파일 경로를 PATH
에 추가하고 구성 파일 경로를 OPENSSL_CONF
에 할당합니다.
환경 변수를 사용하려면 프로필을 다시로드하려면 . $profile
을 입력하거나 PowerShell을 닫고 다시 엽니다.
이제 PowerShell에서 아래에 표시된대로 어디에서나 openssl 이진 파일을 쉽게 호출할 수 있습니다.

Windows 10에서 OpenSSL을 사용하여 CSR 및 개인 키 생성
SSL 인증서를 생성하기 전에 인증서 서명 요청(CSR)을 생성해야합니다. CSR은 공개 키를 인증 기관(CA)과 공유하는 방법을 제공하는 인코딩된 파일입니다. 이 파일에는 식별 정보, 서명 알고리즘 및 디지털 서명이 포함되어 있습니다. 첫 번째 CSR과 개인 키를 생성해 봅시다.
CSR을 생성하려면 아래 명령을 실행하십시오. OpenSSL에서 식별 정보를 입력하도록 요청할 것입니다. 다음 데모에서 확인할 수 있습니다.

완료하면 유효한 CSR과 개인 키가 생성되며 이를 사용하여 SSL 인증서를 발급할 수 있습니다.
데이터를 매번 입력하지 않고도 이 프로세스를 간소화하기 위해 구성 파일의 기본값을 수정할 수도 있습니다.
사용 가능한 CSR 옵션에 대해 더 알아보고 매뉴얼 페이지에서 구성 예제를 확인할 수 있습니다. OpenSSL은 예제를 포함한 활발한 GitHub 저장소도 가지고 있습니다.
RSA 키 쌍 생성
OpenSSL을 사용하여 RSA 키 쌍(공개/개인)을 생성할 수도 있습니다. 아래와 같이 genrsa
하위 명령을 사용하여 먼저 개인 키를 생성하십시오.
다음 명령을 실행하면 Windows 10의 OpenSSL이 키 길이가 2048 비트인 RSA 개인 키를 생성합니다. 이 키는 현대적인 하드웨어에서 거의 즉시 생성됩니다. 생성된 키는 작업 디렉토리에 출력됩니다.
다음으로 방금 생성한 개인 키를 사용하여 공개 키를 생성합니다. 아래 구문은 작업 디렉토리에 rsa.public이라는 공개 키를 rsa.private 개인 키에서 생성합니다.
자체 서명 인증서 생성
가끔은 자체 서명 인증서를 생성해야 할 수도 있습니다. 자체 서명 인증서는 실험용으로 사용하기에는 좋지만 제품 환경에서 사용하기에는 안전하지 않은 방법입니다.
다음 작업으로 넘어가기 전에 자체 서명 인증서를 생성해 봅시다. 아래 명령을 입력하여 X509 SSL 인증서를 생성합니다. 이 인증서는 RSA 키 길이가 2048 비트이며 유효 기간이 365일인 SHA256 암호화를 사용합니다. 인증서는 작업 디렉토리에 저장됩니다.
이제 브라우저나 서버에 인증서를 가져오 ready합니다.
OpenSSL을 사용하여 CSR, 인증서 및 키 유효성 검사
CSR, 개인 키, 인증서 또는 PKCS#12의 정보를 확인하면 SSL 오류를 해결하는 데 시간을 절약할 수 있습니다. 때로는 잘못된 키가 인증서 생성에 사용된 경우가 있습니다. 예를 들어, 인증서에 잘못된 식별 정보가 포함될 수 있습니다.
이제 몇 가지 매개변수와 함께 req
명령을 사용하여 CSR을 확인하는 것으로 시작해 보겠습니다:

국가 이름, 조직 이름, 이 가이드의 시작 부분에서 CSR을 생성할 때 입력한 이메일 주소 등과 같은 세부 정보는 정확히 일치해야 합니다.
또한 몇 가지 매개변수와 함께 x509
하위 명령을 사용하여 인증서를 확인할 수도 있습니다:

OpenSSL을 사용하여 인증서 변환하기
일부 응용 프로그램에서는 특정한 인증서 형식을 사용하지 않을 수도 있습니다. 예를 들어, HAproxy라는 응용 프로그램에서는 PEM 인증서를 요구하는데, 여기서는 DER 형식의 인증서(.crt .cer .der)를 가지고 있을 수 있습니다.
인증서 변환을 보여주기 위해, 이전에 생성된 자체 서명 인증서를 DER 형식(certificate.crt)에서 PEM 형식으로 변환해 보겠습니다. 다음 코드 스니펫의 코드를 사용하세요.
아래 명령은 x509
하위 명령을 사용하며, -inform
매개변수는 -in
파일의 형식과 일치해야 하며, 이에 이어 -out
형식을 지정합니다.
또한 아래와 같이 PEM에서 DER 형식으로 역순으로 변환할 수도 있습니다.
그리고 마지막으로, PKCS#12를 PEM으로 변환하거나 PEM을 PKCS#12로 변환할 수 있습니다. 이는 개인 키와 인증서를 포함하는 파일 유형입니다. PEM 형식으로 변환하려면 pkcs12
하위 명령을 사용하십시오.
또한 몇 가지 추가 옵션을 사용하여 PEM 인증서와 개인 키를 PKCS#12 형식으로 변환할 수도 있습니다. 아래 예제에서는 입력 소스로 SomeCertificate.crt
를 사용하여 개인 키를 사용하여 PKCS#12 형식으로 인증서를 내보내고 있습니다. -certfile
옵션 값 MyCACert.crt
를 사용하여 SomeCertificate.crt
를 유효성 검사할 수 있습니다.
문제 해결 및 디버깅
이제 CSR, 인증서 및 키 쌍을 생성하고 변환할 수 있으므로 문제를 해결하고 디버깅하는 방법을 배워보겠습니다. OpenSSL에는 문제를 해결하는 데 도움이 되는 명령이 포함되어 있습니다.
OpenSSL은 또한 파일 무결성을 확인하고 가능한 데이터 손상을 테스트하는 것도 가능합니다. MD5 체크섬을 사용하여 인증서, 키 및 CSR을 테스트하는 다음 코드 예제를 사용할 수 있습니다:
원래 해시를 얻은 후 현재 해시와 비교하여 인증서가 수정되거나 손상되지 않았는지 확인할 수 있습니다.
다음은 PowerShell에서 실행할 때 해당 코드가 어떻게 보이는지 샘플입니다:

요약
이 문서에서는 Windows 10에서 OpenSSL을 설치하고 구성하는 방법, CSR, 키 쌍 및 SSL 인증서를 생성하는 방법에 대해 배웠습니다. 또한 다른 인증서 형식 간의 변환 및 내장 하위 명령을 사용하여 기본적인 문제 해결을 수행하는 방법에 대해 배웠습니다.