[Linux] 리눅스 서버 openssl 인증서 만들기

리눅스 사설인증서 만들기 SSL

리눅스 서버 openssl 인증서 만들기

오늘은 리눅스 서버에서 SSL 사설 인증서를 생성하는 방법에 대해서 알아보도록 하겠습니다. 내 사이트를 호스팅 하겠다는 목적이라면 공인 인증된 기관에서 발급된 사설 인증서가 필요하지만, 내부적으로 사용할 목적이라면 openssl을 이용해서 직접 만들어 보시는 것을 추천 드립니다.

 

openssl이 설치되어 있어야 합니다.

# rpm -qa | grep openssl

명령어를 통해서 openssl 설치 여부를 확인하실 수 있습니다.

 

개인 키 발급 .key

OpenSSL> genrsa -out [파일명.key] 2048

  - 비밀번호가 없는 개인 키 생성

  - https의 ssl 인증서는 서비스를 등록할 때 마다 비밀번호를 입력해야하기 때문에 비밀번호 없이 사용

 

OpenSSL> genrsa -des3 -out [파일명] 2048

  - 비밀번호가 담긴 개인 키 생성 : 암호 및 암호 확인 절차 추가됨

  - 공인 인증서의 경우 암호 필요

 

공개키 발급

개인키와 쌍이 되는 공개키 발급

OpenSSL> rsa -in private.key -pubout -out public.key

writing RSA key

 

CSR(인증기관 인증요청서) 만들기

SSL 인증 정보를 암호화하여 인증기관 CA에 보내 인증서를 발급받게 하는 신청서

OpenSSL> req -new -key [private key 파일명] -out [파일명.csr]

 

 

환경설정파일 강제지정 옵션 추가

OpenSSL> req -config ./openssl.cnf -new -key private.pem -out private.csr

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.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:Seoul
Locality Name (eg, city) []:Kangnam-gu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany.Ltd
Organizational Unit Name (eg, section) []:RnD Center
Common Name (e.g. server FQDN or YOUR name) []:MyDomain.MyCompany.com
Email Address []:manager@MyCompany.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:password
An optional company name []:MyCompany2

주의사항 : 특수문자 금지, CSR과 Private Key는 쌍으로 관리되어야 함.

 

마지막 challenge password, optional company name 는 안넣는것이 좋습니다.

 

CSR 인증서 정보 확인

OpenSSL> req -noout -text -in [파일명.csr]

 

나에게 서명을 해줄 CA가 필요합니다.

 

rootCA.key 생성하기

genrsa -[암호화 알고리즘] -out [키이름.key] 2048

패스워드 필수

 

CRT 인증서 만들기

명령어 : openssl req -x509 -days [기간] -key [private key 파일명] -in [csr 파일명] -out [파일명] -days [기간]

# openssl req -x509 -days 365 -key private.key -in private.csr -out mycommoncrt.pem -days 365

key를 이용하여 1년짜리 pem 생성

 

만들어 놓은 csr로 rootCA의 인증을 받아 private.crt 생성

x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650

 

인증서 Config 파일 (test.conf)

 

[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C=KR
ST=Seoul
L=Seoul
O=COMPANY
OU=DEV
emailAddress=test@test.com
CN = testmachine

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
IP.1 = 111.111.111.111
DNS.1 = test.com

SSL 인증서를 만들다 보면 계속 같은 내용을 써야 합니다. 그래서 그 부분을 파일로 만들어 놓고 csr, crt 생성할때 사용하면 됩니다.

 

openssl req -new -key private.key -out private.csr -config test.conf

 

openssl req -x509 -days 365 -key private.key -in private.csr -out mycommoncrt.crt -days 365 -config test.conf

 

그리고 이렇게 해서 인증서를 만들었을때 subjectAltName 이 안들어갑니다 . 그 부분이 필요할 경우에는 아래와 같이 명령어를 사용하면 됩니다.

 

openssl req -x509 -days 365 -key private.key -in private.csr -out mycommoncrt.crt -days 365 -config test.conf -extensions req_ext

 

인증서 내용 확인하기

openssl x509 -text -noout -in <인증서파일>  : 인증서 내용을 볼수 있다.

댓글

Designed by JB FACTORY