SW/리눅스

Linux : 자체 서명 SSL 인증서 생성 방법, 예제, 명령어

얇은생각 2021. 8. 6. 07:30
반응형

이 문서에서는 openssl 도구를 사용하여 자체 서명된 SSL 인증서를 생성하는 방법을 설명합니다.

 

 

Linux : 자체 서명 SSL 인증서 생성 방법, 예제, 명령어

 

 

자체 서명된 SSL 인증서란

자체 서명된 SSL 인증서는 신뢰할 수 있는 인증 기관이 아닌 해당 인증서를 만든 사용자가 서명한 인증서입니다. 자체 서명 인증서는 신뢰할 수 있는 CA 서명된 SSL 인증서와 동일한 수준의 암호화를 가질 수 있습니다.

웹 브라우저는 자체 서명된 인증서를 유효한 인증서로 인식하지 않습니다. 자체 서명된 인증서를 사용하는 경우 웹 브라우저는 방문자에게 웹 사이트 인증서를 확인할 수 없다는 경고를 표시합니다.

일반적으로 자체 서명된 인증서는 테스트 목적으로 또는 내부 용도로 사용됩니다. 인터넷에 노출된 프로덕션 시스템에서는 자체 서명 인증서를 사용하면 안 됩니다.

 

 

 

전제조건

자체 서명된 인증서를 생성하려면 OpenSSL 툴킷이 필요합니다. 

Linux 시스템에 openssl 패키지가 설치되어 있는지 확인하려면 터미널을 열고 openssl 버전을 입력한 다음 Enter 키를 누릅니다. 패키지가 설치된 경우 시스템에서 OpenSSL 버전을 인쇄합니다. 그렇지 않으면 openssl 명령과 같은 명령을 찾을 수 없습니다.

시스템에 openssl 패키지가 설치되어 있지 않은 경우 배포의 패키지 관리자와 함께 설치할 수 있습니다.

 

우분투와 데비안

sudo apt install openssl

 

 

센토스와 페도라

sudo yum install openssl

 

 

 

자체 서명된 SSL 인증서 생성

새 자체 서명된 SSL 인증서를 생성하려면 openssl req 명령을 사용하십시오.

openssl req -newkey rsa:4096 \
            -x509 \
            -sha256 \
            -days 3650 \
            -nodes \
            -out example.crt \
            -keyout example.key

 

 

명령을 자세히 살펴보고 각 옵션이 무엇을 의미하는지 알아보겠습니다.

 

-newkey rsa:4096 - 새 인증서 요청 및 4096비트 RSA 키를 생성합니다. 기본은 2048비트입니다.

-x509 - X.509 인증서를 생성합니다.

-sha256 - 265비트 SHA(Secure Hash Algorithm)를 사용합니다.

-days 3650 - 인증서를 인증할 일 수입니다. 3650년은 10년입니다. 임의의 양의 정수를 사용할 수 있습니다.

-node - 암호 없이 키를 생성합니다.

-out example.crt - 새로 만든 인증서를 쓸 파일 이름을 지정합니다. 파일 이름을 지정할 수 있습니다.

-keyout example.ky - 새로 만든 개인 키를 쓸 파일 이름을 지정합니다. 파일 이름을 지정할 수 있습니다.

 

openssl req 명령 옵션에 대한 자세한 내용은 OpenSSL req 설명서 페이지를 참조하십시오. 

Enter 키를 누르면 명령이 개인 키를 생성하고 일련의 질문을 합니다. 제공한 정보는 인증서를 생성하는 데 사용됩니다.

# Generating a RSA private key
# ......................................................................++++
# ........++++
# writing new private key to 'example.key'
# -----
# You are about to be asked to enter information that will be incorporated
# into your certificate request.
# What you are about to enter is what is called a Distinguished Name or a DN.
# There are quite a few fields but you can leave some blank
# For some fields there will be a default value,
# If you enter '.', the field will be left blank.
# -----

 

 

요청한 정보를 입력하고 Enter 키를 누릅니다.

# Country Name (2 letter code) [AU]:US
# State or Province Name (full name) [Some-State]:Alabama
# Locality Name (eg, city) []:Montgomery
# Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linuxize
# Organizational Unit Name (eg, section) []:Marketing
# Common Name (e.g. server FQDN or YOUR name) []:linuxize.com
# Email Address []:hello@linuxize.com

 

 

인증서 및 개인 키가 지정된 위치에 생성됩니다. ls 명령을 사용하여 파일이 생성되었는지 확인합니다.

ls

# example.crt example.key

 

 

새 자체 서명된 SSL 인증서를 생성했습니다. 

항상 외부 스토리지에 새 인증서와 키를 백업하는 것이 좋습니다.

 

 

 

프롬프트 없이 자체 서명된 SSL 인증서 생성

질문을 묻지 않고 자체 서명된 SSL 인증서를 생성하려면 -subj 옵션을 사용하고 모든 주체 정보를 지정하십시오.

openssl req -newkey rsa:4096 \
            -x509 \
            -sha256 \
            -days 3650 \
            -nodes \
            -out example.crt \
            -keyout example.key \
            -subj "/C=SI/ST=Ljubljana/L=Ljubljana/O=Security/OU=IT Department/CN=www.example.com"

# Generating a RSA private key
# ......................................................................++++
# ........++++
# writing new private key to 'example.key'
# -----

 

 

-subj 라인에 지정된 필드는 아래에 나와 있습니다.

 

C= - 국가 이름입니다. 두 글자의 ISO 약자입니다.

ST= - 시/도 이름입니다.

L= - 지역 이름입니다. 사용자가 위치한 도시의 이름입니다.

O= - 조직의 전체 이름입니다.

OU= - 조직 단위입니다.

CN= - 정규화된 도메인 이름입니다.

반응형