Openssl

wwiki
이동: 둘러보기, 검색

개인키 생성[편집 | 원본 편집]

genrsa -out private.key 1024

비밀번호 제거[편집 | 원본 편집]

$ openssl rsa -in key.pem.orig -out key.pem

파일 암복호화[편집 | 원본 편집]

암호화[편집 | 원본 편집]

공개키로 암호화

$ openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl;
$ echo -n "" | openssl rsautl -encrypt -in - -inkey id_rsa.pub.pem -pubin | openssl base64 -A

복호화[편집 | 원본 편집]

개인키로 복호하

$ openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
$ echo "" | openssl base64 -d | openssl rsautl -decrypt -inkey id_rsa

공개키 생성[편집 | 원본 편집]

openssl rsa -in private.key -out public.key -pubout -outform derwriting

PEM포맷으로 생성[편집 | 원본 편집]

openssl rsa -in private.key -out public.key -pubout

인증서[편집 | 원본 편집]

인증서 생성[편집 | 원본 편집]

private.key로 만든 인증서

일반적으로 윈도우에서 .crt파일로 생성하고 리눅스등에서 .pem으로 생성하기도 한다.

openssl req -new -x509 -days 365 -key private.key -out cert.crt -config C:\openssl\ssl\openssl.cnf

국가코드: KR

인증서의 내용[편집 | 원본 편집]

인증서는 pem포맷으로 윈도우의 경우 crt확장자를 인증서로 인식한다. 더블클릭하면 발급대상과 발급자가 있으며, 자세히를 보면 버전, 서명 알고리즘, 유효기간, 주체, 공개키 등이 있다.

인증서 내용 보기[편집 | 원본 편집]
$ openssl x509 -text -noout -in localhost.crt
웹서버용 인증서[편집 | 원본 편집]

Let's Encrypt certificate

인증서 파일의 확장자[편집 | 원본 편집]

출처: https://ko.wikipedia.org/wiki/X.509

.CRT - CRT 암호화 된 인증서. 보통 개인키와 주는 파일

.CER - CER 암호화 된 인증서. 복수의 인증서도 가능.

.DER - DER 암호화 된 인증서.

.PEM

.P7B - .p7c 참조.

.P7C - PKCS#7 서명 자료 구조(자료는 제외), 인증서이거나 CRL(복수도 가능).

.PFX - .p12 참조.

.P12 - PKCS#12, 공개 인증서와 암호로 보호되는 개인 키를 가질 수 있다(복수도 가능).

pfx[편집 | 원본 편집]

MS에서 사용하는 personal information exchange syntax standard(개인정보 교환 구문 표준)인 pkcs12포맷의 확장자

인증서와 개인키로 생성[편집 | 원본 편집]

crt(pem포맷의 인증서)와 key(pem포맷의 개인키)로부터 생성

$ openssl pkcs12 -export -out pkcs12.pfx -inkey privkey.pem -in fullchain.pem
$ openssl pkcs12 -export -out pkcs12.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

인증서로 생성[편집 | 원본 편집]

cer 인증서 생성

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

개인키 추출[편집 | 원본 편집]

$ openssl.exe pkcs12 -in my.pfx -nocerts -nodes -out private.key

SSL/TLS client program[편집 | 원본 편집]

$ openssl s_client
$ openssl s_client -showcerts -connect wiki.wnote.kr:443

키 포맷[편집 | 원본 편집]

PKCS(Public-Key Cryptography Standard)

RFC4716[편집 | 원본 편집]

The Secure Shell (SSH) Public Key File Format (https://www.ietf.org/rfc/rfc4716.txt)

---- BEGIN SSH2 PUBLIC KEY ----

ssh-keygen (Version: 1:8.4p1-5)에서 왜 이렇게 ...

-----BEGIN OPENSSH PRIVATE KEY-----

PKCS8[편집 | 원본 편집]

Private-Key Information Syntax Specification(https://datatracker.ietf.org/doc/html/rfc5208)

공개키 암호에서 사용되는 비밀키 값에 대한 문법을 정의한다.

PEM[편집 | 원본 편집]

Privacy Enhanced Mail

Textual Encodings of PKIX, PKCS, and CMS Structures(https://datatracker.ietf.org/doc/html/rfc7468)

Base64로 인코딩 된 데이터가 header와 footer 사이에 들어간다.

인증서 경우엔 다음과 같다.

-----BEGIN CERTIFICATE-----
base64로 인코딩된 데이터
-----END CERTIFICATE-----

PKCS #8 Private Key 는 https://datatracker.ietf.org/doc/html/rfc7468#section-10 에 정의되어 있다.

-----BEGIN PRIVATE KEY-----
MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgVcB/UNPxalR9zDYAjQIf
jojUDiQuGnSJrFEEzZPT/92hRANCAASc7UJtgnF/abqWM60T3XNJEzBv5ez9TdwK
H0M6xpM2q+53wmsN/eYLdgtjgBd3DBmHtPilCkiFICXyaA8z9LkJ
-----END PRIVATE KEY-----

포맷 변경[편집 | 원본 편집]

pem을 crt로 변경

$ openssl x509 -in sample.pem -inform pem -out sample.crt

pem 포맷 BEGIN RSA PUBLIC KEY => BEGIN PUBLIC KEY

$ openssl rsa -RSAPublicKey_in -in 파일명 -pubout -out 출력파일명