Engineering/OpenSSL

OpenSSL 설치 및 인증서 발급

블로그 닉네임 입력 제한 수는 몇 자인가요? 2025. 4. 15. 17:58

OpenSSL이란

OpenSSL은 데이터를 암호화하거나 보안을 적용할 때 사용하는 오픈소스 툴킷
보통 인터넷에서 HTTPS 같은 보안 통신, 전자서명, 인증서 발급, 암호화된 파일 생성 등에 사용

공인된 인증 기관(CA)에서 인증서를 발급받기 위한 제출용 CSR을 만들거나
자체 서명 인증서(Self-Signed)로 개발 및 테스트용 인증서 발급 가능

설치는 Windows 기준으로 작성합니다.

1. OpenSSL 다운로드
Full 버전: 모든 기능 포함, 인증서 생성·서명 등 고급 작업 가능
Light 버전: 기본 기능만 포함, 간단한 암호화 / 복호화 용도
저는 인증서 발급을 위해 Full 버전으로 받았습니다.

 

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 9, 2025 - OpenSSL 3.5 is available. Users should currently ins

slproweb.com

 

2. 시스템 환경변수 설정 
시스템 속성 > 고급 탭 > 환경 변수에서 
시스템 변수 > 새로 만들기 클릭 
변수 이름 / 변수 값(OpenSSL 설치 경로)을 입력하면 
터미널에서 OpenSSL 사용이 가능합니다.

 

3. 터미널 열고 OpenSSL 버전 확인 

openssl -v

설치 확인!

 

4. 자체 서명 인증서 발급
인증서 발급 시 여러 포맷이 존재합니다.
해당 표를 참고하여 원하는 포맷의 인증서를 발급받으면 됩니다.
발급 이후 포맷 변환도 가능합니다.

확장자 포맷 설명 텍스트/바이너리
.pem PEM (Base64 인코딩) 가장 널리 사용됨.
-----BEGIN CERTIFICATE-----로 시작
텍스트
.crt PEM 또는 DER 확장자만 다르고 내용은 PEM일 수도 있음 보통 텍스트
.cer PEM 또는 DER Windows에선 주로 DER (이진),
리눅스에선 PEM일 수도
둘 다 가능
.der DER
(Distinguished Encoding Rules)
바이너리 형식, 주로 Windows/Java용 바이너리
.pfx
/ .p12
PKCS#12 개인키 + 인증서 묶은 파일, 암호화 가능 바이너리
.key PEM 개인키 (Private Key) 텍스트

 

5. 개인키 + 인증서 발급 명령어 입력
인증서를 발급할 때도 여러 옵션이 존재합니다.
주요 옵션을 정리해봤습니다.

옵션 설명
-x509 자체 서명 인증서 생성 (CA 없이 직접 발급)
-newkey rsa:2048 새 RSA 키 생성 (2048 비트)
-keyout <파일명> 생성할 개인키 파일명 지정
-out <파일명> 생성할 인증서(CRT) 또는 CSR 파일명 지정
-nodes 개인키에 암호 설정하지 않음 (비밀번호 없이 저장)
-days <숫자> 인증서 유효기간 (ex: -days 365 = 1년)
-subj "/C=KR/ST=Seoul/..." DN 입력값을 자동으로 주입 (대화식 입력 생략 가능)
-config <파일> 확장 설정 파일 지정 (SAN 등 포함 시 사용)
-sha256 서명 해시 알고리즘 지정 (기본은 SHA1, SHA256 이상 권장)

 

명령어 입력!

// -x509 : 자체 서명 인증서 생성
// -newkey rsa:2048 : RSA 2048 개인키와 공개키 쌍을 생성
// -keyout mydomain.key 개인키 파일명
// -out mydomain.crt 인증서 파일명
// -days 365 인증서 유효기간(1년)
// -nodes 키 파일 내 비밀번호 설정하지 않음(No DES)
openssl req -x509 -newkey rsa:2048 -keyout mydomain.key -out mydomain.crt -days 365 -nodes

 

6. 인증서의 DN 입력
DN(Distinguished Name)은 인증서에서 사용자나 서버의 고유한 신원을 나타내는 식별 정보 집합입니다.
주로 국가, 조직, 도메인 등으로 구성되며 인증서의 SubjectIssuer 필드에 사용됩니다.
트리 구조라는 것을 기억해주세요.

 

7. 발급된 인증서 확인!

openssl x509 -in mydomain.crt -text -noout

 

다음엔 제출용 CSR 발급 & 활용 방법도 작성해볼게요.