
SSL/TLS 인증서를 생성하는 프로세스는 많은 Linux 시스템 관리자의 일반적인 작업입니다. 다행히도 관리자가 아니더라도 많은 Linux 배포판에 기본적으로 설치되는 오픈 소스 도구인 OpenSSL을 사용하면 쉽게 관리자를 관리할 수 있습니다. 여기에서는 OpenSSL이 무엇인지, 어떻게 설치하는지, 가장 중요하게는 이를 사용하여 시스템에서 SSL 및 TLS 인증서를 생성하는 방법을 설명합니다.
OpenSSL이란 무엇입니까?
OpenSSL은 네트워크 트래픽 암호화를 위한 오픈 소스 SSL 및 TLS 구현을 제공하기 위해 OpenSSL 프로젝트에서 개발한 라이브러리입니다. 다양한 Unix 기반 배포에서 쉽게 사용할 수 있으며 인증서, RSA 개인 키를 생성하고 일반 암호화 관련 작업을 수행하는 데 사용할 수 있습니다.
자체 서명 SSL 인증서 제한
OpenSSL을 사용하여 SSL 인증서를 생성하면 "자체 서명"된 것으로 간주됩니다. 이는 SSL 인증서가 인증 기관(CA)이 아닌 자체 개인 키로 서명되었음을 의미합니다.
따라서 SSL 인증서는 "신뢰"할 수 없으며 공개 사이트에 사용해서는 안됩니다. 사용하는 경우 사용자는 브라우저에서 인증서에 대한 경고를 볼 수 있습니다.
자체 서명된 인증서는 로컬 개발 또는 인터넷에 연결되지 않은 백그라운드에서 실행되는 모든 앱에 유용합니다.
또는 LetsEncrypt를 사용하거나 Comodo CA와 같은 신뢰할 수 있는 기관에서 인증한 인증서를 얻을 수 있습니다.
설치
대부분의 Linux 배포판에는 이미 기본적으로 OpenSSL 버전이 내장되어 있습니다. 그렇지 않다면 쉽게 설치할 수 있습니다.
apt
를 사용하여 Ubuntu 및 Debian에 설치할 수 있습니다. 명령:
sudo apt install openssl
CentOS(또는 대안)에서는 yum
을 사용하여 설치할 수 있습니다. 명령:
sudo yum install openssl
웹사이트에서 ".tar.gz" 파일로 쉽게 다운로드할 수도 있습니다.
기본 사용법
이제 OpenSSL이 설치되었으므로 프로그램이 제공하는 몇 가지 기본 기능을 살펴보겠습니다.
OpenSSL 설치에 대한 버전 및 기타 관련 정보를 확인하여 시작할 수 있습니다.
openssl 버전 -a

제공된 설명서를 확인할 수 있습니다.
openssl 도움말

구성 파일을 사용하여 인증서 생성
OpenSSL을 사용하여 인증서를 생성하는 것은 여러 가지 방법으로 가능합니다. 그 중 하나는 조직에 대한 세부 정보를 지정하는 구성 파일을 사용하는 것입니다.
시작하려면 "config.conf"라는 구성 파일을 만들고 Nano를 사용하여 편집할 수 있습니다.
sudo nano example.conf
다음은 구성 파일 내용의 예입니다.
[사전>[req]default_bits =2048prompt =nodefault_md =sha256req_extensions =req_extx509_extensions=v3_cadistinguished_name =dn [dn]C =USST =CaliforniaL =Los AngelesO =OrgOU =SalesemailAddress.com =www.test ]subjectKeyIdentifier=hashauthorityKeyIdentifier=keyid:always,issuer:alwaysbasicConstraints =CA:true [req_ext]subjectAltName =@alt_names [alt_names]DNS.1 =test.example.com이것을 복사하여 파일에 붙여넣고 조직의 정보를 반영하도록 필요한 변경을 하면 됩니다.

다음으로 루트 인증서를 생성하는 데 사용할 RSA 개인 키를 생성해야 합니다. -:
openssl genrsa -out example.key 2048
-out
플래그는 이 경우 생성될 키의 이름을 지정하는 데 사용됩니다. RSA 키의 기본값인 2048비트의 키 크기도 지정됩니다.

또한 인증서 서명 요청(CSR)을 생성해야 합니다.
openssl req -new -key example.key -out example.csr -config example.conf
이 경우 -key
플래그는 RSA 키를 지정하는 데 사용됩니다. -out
플래그는 CSR 파일의 이름과 -config
를 지정합니다. 플래그는 구성 파일의 이름을 지정하는 데 사용됩니다.
그런 다음 최종 인증서를 생성하는 데 사용되는 루트 인증서를 생성할 수 있습니다.
openssl req -x509 -sha256 -nodes -new -key example.key -out example.crt -config example.conf
이 루트 인증서를 생성하는 과정에서 -sha256
플래그는 SHA256을 메시지 요약으로 지정하는 데 사용됩니다.
이제 마지막 단계에서 다음을 입력하여 인증서를 생성할 수 있습니다.
openssl x509 -sha256 -CAcreateserial -req -days 30 -in example.csr -extfile example.conf -CA example.crt -CAkey example.key -out final.crt
-CA
플래그는 루트 인증서, -CAkey
를 지정합니다. 플래그는 개인 키를 지정하고 -extfile
구성 파일의 이름을 지정합니다. "final.crt" 파일은 원하는 SSL 인증서가 됩니다.

구성 파일 없이 인증서 생성
또는 구성 파일 없이 OpenSSL을 사용하여 인증서를 생성할 수도 있습니다.
RSA 개인 키를 생성하여 시작할 수 있습니다.
openssl genrsa -out example.key 2048
다음으로 CSR을 생성해야 합니다.
openssl req -new -key example.key -out example.csr
CSR을 생성할 때 조직에 대한 질문에 답하라는 메시지가 표시됩니다.

마지막으로 인증서 자체를 생성할 수 있습니다.
openssl x509 -req -days 30 -in example.csr -signkey example.key -out example.crt

키 및 인증서 확인
-check
를 사용하여 OpenSSL을 사용하여 키와 인증서를 쉽게 확인하고 확인할 수 있습니다. 플래그:
openssl rsa -check -in example.key

인증서 서명 요청을 확인할 수 있습니다.
openssl req -text -noout - example.csr
및 인증서:
openssl x509 -text -noout - example.crt

자주 묻는 질문(FAQ)
1. Heartbleed에 대해 여전히 걱정해야 하나요?
Heartbleed(CVE-2014-0160)는 2014년 OpenSSL에서 발견된 오래된 취약점입니다. OpenSSL을 실행하는 TLS 서버와 클라이언트 모두 영향을 받았습니다. 패치는 발견된 지 며칠 후 빠르게 릴리스되었으며 이 취약점은 최신 OpenSSL 버전을 실행하는 한 2022년에 걱정할 문제가 아닙니다.
Debian 및 Ubuntu 기반 시스템에서 OpenSSL을 사용하는 경우 다음 명령을 실행하여 언제든지 업데이트할 수 있습니다.
sudo apt 업데이트 &&sudo apt 업그레이드 openssl
2. SSL 인증서는 만료되기 전에 얼마나 오래 지속되나요?
이는 인증서를 생성할 때 선택한 값에 따라 다릅니다. -days
를 사용하여 지정할 수 있습니다. 인증서를 생성할 때 플래그를 지정합니다.