SSL/TLS 인증서는 웹 애플리케이션 또는 서버를 보호하는 데 필수적인 요소입니다. 많은 평판이 좋은 인증 기관(CA)에서 유료로 SSL/TLS 인증서를 제공합니다. 그러나 비용 부담 없이 OpenSSL을 사용하여 자체 서명 인증서를 만들 수도 있습니다. 자체 서명 인증서는 신뢰할 수 있는 CA의 임프린터가 없지만 웹 트래픽을 암호화할 수 있습니다. OpenSSL을 사용하여 웹사이트 또는 서버에 적합한 자체 서명 인증서를 생성하는 방법에 대한 질문이 생깁니다.

OpenSSL 설치 방법

OpenSSL은 오픈 소스 소프트웨어입니다. 하지만 프로그래밍에 대한 배경 지식이 없고 빌드 프로세스가 걱정된다면 약간의 기술적 설정이 필요합니다. 이를 방지하기 위해 slproweb 사이트에서 완전히 컴파일되어 설치 준비가 완료된 최신 버전의 OpenSSL 코드를 다운로드할 수 있습니다 .

사용 중인 시스템과 호환되는 최신 버전의 OpenSSL에 해당하는 적절한 MSI 확장자를 선택하세요.

“D:/OpenSSL-Win64″에 있는 앞서 언급된 OpenSSL 인스턴스는 사용자가 변경할 수 있습니다. 설치 프로세스가 완전히 실행된 경우, 관리자 권한으로 PowerShell에 액세스하여 OpenSSL이 설치된 디렉터리 내에 있는 “bin” 하위 폴더로 이동합니다. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다:

 cd 'D:\OpenSSL-Win64\bin'

사용자가 선택한 방식으로 openssl.exe를 사용할 수 있는 권한이 부여되었습니다.

OpenSSL로 개인 키 생성

자체 서명 인증서를 생성하려면 개인 키가 있어야 합니다. 이러한 키를 얻으려면 “bin” 폴더로 이동하여 관리자 권한으로 PowerShell을 엽니다. 그런 다음 PowerShell에서 다음 명령을 실행하여 개인 키를 만듭니다.

 openssl.exe genrsa -des3 -out myPrivateKey.key 2048

OpenSSL을 사용하여 2048비트 길이의 3DES 암호화 RSA 개인 키를 생성하는 프로세스는 다음 단계로 이루어집니다: 1. 터미널 또는 명령 프롬프트 창에 ‘openssl enc -aes-256-cbc’를 입력하여 OpenSSL과 암호화된 연결을 엽니다. 2. 메시지가 표시되면 강력하고 기억하기 쉬운 비밀번호를 입력합니다. 이 비밀번호는 개인키를 암호화하는 데 사용됩니다. 3. 확인 메시지가 다시 표시되면 입력한 비밀번호를 반복 입력합니다. 처음 비밀번호를 입력하면 OpenSSL이 해싱한 후 구성 파일에 저장합니다. 두 번째로 입력할 때 OpenSSL은 이 해시를 사용하여 비밀번호를 확인합니다.비밀번호를 한 번이라도 잘못 입력하면 원래 비밀번호에서 파생된 모든 키를 사용할 수 없게 됩니다

이 글도 확인해 보세요:  웹 추적과 사용자 추적: 차이점은 무엇인가요?

앞서 언급한 메시지는 “myPrivateKey.key”라는 이름의 개인 RSA 키가 지정된 위치 또는 컨텍스트 내에서 발견될 수 있음을 시사합니다.

OpenSSL로 CSR 파일을 만드는 방법

디지털 서명을 생성하고 다른 사람에게 확인하려면 인증 기관(CA)이 필요합니다. 이러한 CA를 획득하려면 루트 기관으로 알려진 신뢰할 수 있는 제3자에게 요청하고 승인을 받는 복잡한 절차를 거쳐야 합니다. 이 과정은 몇 주 또는 몇 달이 걸릴 수 있으므로 개인이나 소규모 기업은 보안 통신에 필요한 리소스에 액세스하기 어렵습니다. 그 결과, 많은 사람들이 취약한 암호화 알고리즘에 의존하거나 적절한 검증이 부족한 대체 솔루션을 선택하여 잠재적인 보안 위험과 개인정보 보호 문제를 야기합니다.

 openssl.exe req -new -key myPrivateKey.key -out myCertRequest.csr

OpenSSL 알고리즘은 개인 키를 생성하기 위해 사용자가 비밀번호를 제출해야 합니다. 또한 법적 및 개인 신원 확인과 같은 추가 세부 정보를 요청할 수 있습니다. 제공된 모든 정보가 정확한지 확인하세요.

통합 명령줄 인터페이스를 활용하면 단 한 번의 명령으로 이전의 모든 작업을 동시에 수행할 수 있습니다. 다음 명령을 실행하면 개인 RSA 키와 CSR(인증서 서명 요청) 문서를 동시에 생성할 수 있습니다:

 openssl.exe req -new -newkey rsa:2048 -nodes -keyout myPrivateKey2.key -out myCertRequest2.csr

앞서 언급한 “myCertRequest.csr”라는 파일은 이제 해당 디렉토리에서 볼 수 있습니다. 이 인증서 서명 요청(CSR)은

인증서를 받으려는 엔터티를 ‘기관’이라고 합니다.

인터넷에서 웹사이트 주소를 지칭하는 데 일반적으로 사용되는 용어를 ‘도메인 이름’이라고 합니다.

공개 키는 데이터, 메시지 또는 파일을 암호화하는 데 사용되는 암호화 도구입니다. 공개 키는 다른 사람과 공유하여 다른 사람이 암호화된 메시지를 다시 보낼 수 있도록 하거나, 다른 사람이 보낸 메시지를 해독할 때 해당 개인 키를 사용하여 해독하는 데 사용할 수 있습니다.

CSR(인증서 서명 요청)을 제출하여 관련 기관의 검토 및 승인을 받으시기 바랍니다. 여기에는 CSR을 인증 기관 또는 다른 중간 기관에 전달하는 것이 포함될 수 있습니다.

당사의 규제 기관 및 금융 기관은 요청하는 인증 유형에 따라 제공된 데이터의 신뢰성을 평가합니다. 이 정보를 검증하기 위해 팩스, 이메일 또는 스네일 메일 서신 등 추가 문서가 필요할 수 있습니다.

이 글도 확인해 보세요:  악성코드 생성에 ChatGPT를 사용할 수 있나요?

인증 기관의 인증서 준비

개인 또는 법인이 작성한 CSR(인증서 서명 요청)을 적법한 인증 기관(CA)에 제출하면, 후자는 CSR의 진위를 확인한 다음 서명을 진행합니다. 이렇게 서명된 문서는 인증서를 요청한 당사자에게 전달됩니다. 이 과정에서 CA는 CSR 및 RSA 파일 모두에서 PEM(보호 요소 식별) 파일을 생성합니다. 결과 PEM 파일은 자체 서명된 SSL 인증서를 만드는 데 필요한 최종 구성 요소 역할을 합니다. 이러한 단계를 준수함으로써 SSL 인증서는 체계적이고 신뢰할 수 있으며 기밀로 유지됩니다.

OpenSSL을 사용하여 자체 서명 인증서를 생성할 때 PEM 파일을 직접 만들 수 있는 옵션이 있습니다. 그러나 이 방법은 인증서의 진위 또는 유효성을 확인할 수 없으므로 인증서의 보안에 잠재적인 위협이 될 수 있습니다. 또한 검증이 부족하면 인증서가 특정 애플리케이션 또는 환경과 호환되지 않을 수 있습니다. 데모 목적으로 가상의 PEM 파일을 사용할 수 있지만 이러한 접근 방식은 실제 운영에서는 비실용적입니다.

개인이 인증된 발급 기관으로부터 개인 식별 번호(PIN)를 획득하고자 하는 가상의 시나리오를 생각해 보겠습니다. 이 PIN을 얻으려면 다음 프로세스를 활용할 수 있습니다: “`css openssl 요청 -새 -키 key.key -아웃 csr.csr openssl x509 -req -days 365 -in csr.csr -signkey key.key -out signed_csr.csr openssl pkcs12 -export -in signed_csr.csr -format BOTH -out myPinCert.pfx “` 이 명령은 CSR(인증서 서명 요청)을 만들고, 개인 키 `key.key`로 서명하고,

 openssl x509 -req -sha256 -days 365 -in myCertRequest.csr -signkey myPrivateKey.key -out myPemKey.pem

를 내보냅니다. 좀 더 고급 언어를 사용하여 앞의 문을 다른 형식으로 만들면 다음과 같이 읽을 수 있습니다: “`css 앞서 언급한 특성을 가진 파일을 가지고 있는 경우, 자체 서명 인증서에 대해 다음 명령을 실행하는 것이 좋습니다:

 openssl.exe x509 -req -days 365 -in myCertRequest.csr -signkey myPemKey.pem -out mySelfSignedCert.cer

앞서 설명한 명령은 코모도 인증 기관(CA)이 “CN=내이름”이라는 제목으로 식별되는 디지털 인증서를 발급했음을 의미하며, 발급일로부터 1년 동안 소유자에게 “[www.example.com](http://www.example.com)” 도메인 이름을 사용할 수 있는 권한을 부여합니다. 따라서 이 인증서는 개인 키 “myPemKey.pem”과 함께 “mySelfSignedCert.cer” 파일에 저장됩니다.

이 글도 확인해 보세요:  보안 등급이란 무엇이며 왜 필요한가요?

자체 서명 인증서 정보

본 명세서는 자체 발급된 인증서와 관련된 세부 정보에 액세스하는 방법에 대한 설명입니다:

 openssl.exe x509 -noout -text -in mySelfSignedCert.cer

본 개시는 발급 기관, 인증 받는 개인 또는 법인, 활용된 관련 알고리즘 및 기타 관련 데이터를 포함하는 다양한 정보를 포함하는 대화형 디지털 인증서를 표시하는 시스템 및 방법을 제공한다. 이러한 혁신을 통해 사용자는 인증서의 포괄적인 내용에 쉽게 액세스하고 볼 수 있으므로 투명성을 높이고 정보에 입각한 의사 결정을 내릴 수 있습니다.

자체 서명 인증서에 인증 기관이 서명하지 않은 경우 어떻게 하나요?

자체 서명 인증서의 보안을 보장하기 위해서는 자체 서명 인증서에 대한 철저한 평가가 필수적입니다. 이러한 평가에 대한 책임은 일반적으로 인증 기관(CA)과 같은 타사 인증서 제공업체에 있습니다. 공인된 CA에 의해 확인 및 승인되지 않은 인증서를 사용하면 심각한 보안 취약점이 발생할 수 있습니다.

권한이 없는 당사자가 자체 서명된 인증서를 사용하여 웹사이트의 불법 복제본을 만들면 사용자 데이터가 도용될 수 있습니다. 또한 로그인 자격 증명 및 사용자 소유의 민감한 정보와 같은 기밀 세부 정보에 액세스할 수 있습니다.

사용자의 이익을 보호하기 위해 웹사이트 및 기타 온라인 플랫폼에서 신뢰할 수 있는 인증 기관(CA)에서 발급한 디지털 인증서를 사용하는 것이 필수적이 되었습니다. 이 조치의 주요 목적은 사용자가 공유하는 민감한 정보를 강력한 암호화로 보호하는 동시에 클라이언트와 서버 간의 연결이 확실한지 확인하는 것입니다.

Windows에서 자체 서명 인증서 만들기

Windows에서 OpenSSL을 사용하여 자체 서명 인증서를 생성하는 과정은 비교적 간단하지만, 인증서가 다른 엔터티에서 유효한 것으로 인정받으려면 인증 기관(CA)의 승인을 얻어야 한다는 점에 유의해야 합니다.

전술한 내용에도 불구하고, 본 인증서의 발급은 사용자의 보안을 충분히 고려하고 있음을 보여줌으로써 해당 사용자에게 본 웹사이트 및 관련 브랜드에 대한 신뢰를 조성하기 위한 것입니다.

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.