본문 바로가기
프로그래밍/네트워크

HTTPS 통신을 위한 자체 인증 SSL 인증서 만들기

by bantomak 2024. 8. 26.

전반적인 과정

  • OpenSSL 다운로드
  • Private Key 생성
  • 인증서 요청(CSR) 파일 생성(private.csr)
  • 자체 서명하기 위해서 rootCA 생성
  • 자체 서명한 인증서 생성(private.crt)
  • pem 확장자로 변환
  • NGINX config 파일에서 해당 파일 위치 지정

OpenSSL 다운로드

아래의 링크를 통해서 OpenSSL을 설치하도록 하자.

 

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Minimum system requirements: Windows XP or later 32MB RAM 200MHz CPU 30MB hard drive space Recommended system requirements: Windows XP or later 128MB RAM 500MHz CPU 300MB hard drive space April 11, 2024 - OpenSSL 3.3 is available. Users should currently in

slproweb.com

Win64 OpenSSL v3.2.3 버전을 받아주었다.

해당 파일을 실행해서 C드라이브에 설치해 주자.

설치 완료!
환경변수에 OPENSSL이 설치된 위치를 등록해준다.

이제 관리자 권한으로 cmd를 실행해 주자

  1. Config 파일 설정
    > set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\bin\openssl.cfg
  2. OpenSSL 실행
    > openssl version

정상적으로 OPENSSL 설치 완료

개인키(private key) 생성

이제 PrivateKey와 PublicKey를 생성해 보자.

 

명령어 : openssl genrsa -out <키 이름> 2048

예시 : openssl genrsa -out private.key 2048

 

더보기

해당 개인키와 쌍이 되는 공개키를 생성해 보자.

 

공개키 생성

명령어 : openssl rsa -in <개인키> -pubout -out <키 이름>

예시 : openssl rsa -in private.key -pubout -out public.key

 

 

개인키와 공개키가 생성되었다.

인증서 요청서 CSR(Certificate Signing Request) 생성

SSL 서버를 운영하는 회사의 정보를 암호화하여 인증 기관으로 보내 인증서를 발급받게 하는 일종의 신청서이다.

(어차피 우린 자체로 서명을 할 거지만 필요한 과정이다.)

 

명령어 : openssl req -new -key <개인키> -out <CRS파일명>

예시 : openssl req -new -key private.key -out private.csr

 

CSR 파일 생성 시에 신청사 정보를 요청하는데, 적당히 입력해 봤다.

> Country Name (2 letter code) [AU]:
KR
> State or Province Name (full name) [Some-State]:
SEOUL
> Locality Name (eg, city) []:
SEOUL
> Organization Name (eg, company) [Internet Widgits Pty Ltd]:
ABC.Co
> Organizational Unit Name (eg, section) []:
abc
> Common Name (e.g. server FQDN or YOUR name) []:
www.abc.co.kr
> Email Address []:
abc@gmail.com

 

아래 추가 정보는 입력 안 함(빈칸으로 두고 엔터 엔터)


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

 

자체 인증하기 위해서 rootCA 생성하기

먼저 인증서의 자체 서명을 하는데 필요한 rootCA를 만들자.

(CA는 Certificate Authority를 의미한다.)

rootCA.key 생성

명령어 : openssl genrsa -aes256 -out <키 이름> 2048

예시 : openssl genrsa -aes256 -out rootCA.key 2048

 

비밀번호를 2번 입력해 주자.

 

CSR 생성하기

rootCA.key를 사용해서 10년짜리 rootCA.csr을 생성하자.

 

명령어 : openssl req -x509 -new -nodes -key <키 이름> -days 3650 -out <CSR 파일명>

예시 : openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.csr

 

임시로 국가, 도시, 회사, 도메인, 메일 등을 입력했다.

CSR 직접 인증해서 CRT 생성하기

직접 만든 rootCA를 통해서 위에서 만들었던 private.csr을 직접 인증해서 private.crt를 생성한다.

 

명령어 : openssl x509 -req -in <csr 파일명> -CA <crt 파일명> -CAkey <키 이름> -CAcreateserial -out <CRT 파일명> -days 3650

예시 : openssl x509 -req -in private.csr -CA rootCA.csr -CAkey rootCA.key -CAcreateserial -out private.crt -days 3650

인증 성공!

 

이제 인증서 모양 아이콘을 가진 private.crt 파일을 생성했다.

 

PEM 파일로 변경하기

NGINX에 등록하기 위해서 key와 crt 파일을 pem 파일 확장자로 변경해야 한다.

아래의 명령어를 통해서 2개의 파일을 변환해 주자.

 

명령어 : openssl ras -in <대상 키> -out <출력 파일명>

예시 : openssl rsa -in private.key -out private.pem

 

명령어 : openssl x509 -inform PEM -in <crt 파일명> -out <출력 파일명>

예시 : openssl x509 -inform PEM -in private.crt -out crt.pem

 

함께 읽으면 좋은 글

 

현존 최강의 암호화 알고리즘 RSA

RSA 암호화 알고리즘컴퓨터 연산 과정의 한계를 이용해서 만든 최강의 보안 RSA는 세 명의 수학자인 로널드 라이베스트(Ron Rivest), 아디 샤미르(Adi Shamir), 레너드 애들먼(Leonard Adleman)이 만들었다. 

jettstream.tistory.com

참고 사이트

 

[SSL]HTTPS통신을 위한 SSL인증서 발급하기(OpenSSL)

먼저 HTTPS통신을 구현 하기 하기전, SSL 이란?Secure Socket Layer의 약자로 SSL 프로토콜은 간단하게 웹서버와 브라우저 사이의 보안을 위해 만들어졌다. 간단하게 요약하자면 대칭키를 이용하여 암호

namjackson.tistory.com

 

nginx ssl 적용하기

nginx ssl이전 포스트 에서 nginx 를 사용하여 back-end server를 load balancing 하는 법을 알아보았다.이번 포스트에서는 nginx 에 ssl을 적용하여 https를 사용해보자. ssl 생성필자는 발급기관에서 발급한 인

setyourmindpark.github.io

 

openssl 생성 - 인증서 .pem 생성

1. oepnssl 설치 > sudo apt install rpm > rpm -qa openssl 2. 버전 및 설치 확인 > openssl version 3. 인증서 만들 경로에 가서 인증서 생성 > cd ~/Desktop > openssl genrsa -des3 -out server.key 2048 > 비밀번호 입력 : 1234 3. 인증

0netw0m1ra.tistory.com

댓글