Openssl
목차
개인키 생성[편집 | 원본 편집]
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
웹서버용 인증서[편집 | 원본 편집]
인증서 파일의 확장자[편집 | 원본 편집]
출처: 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 출력파일명