주 메뉴 열기

wwiki β

바뀜

Openssl

4,027 바이트 추가됨, 2022년 11월 17일 (목) 04:12
인증서와 개인키로 생성
== 개인키 생성 ==
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 암호화 된 인증서.
 
.[[Openssl#PEM|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 사이에 들어간다.
 
인증서 경우엔 다음과 같다.<syntaxhighlight lang="text">
-----BEGIN CERTIFICATE-----
base64로 인코딩된 데이터
-----END CERTIFICATE-----
</syntaxhighlight>PKCS #8 Private Key 는 https://datatracker.ietf.org/doc/html/rfc7468#section-10 에 정의되어 있다. <syntaxhighlight lang="text">
-----BEGIN PRIVATE KEY-----
MIGEAgEAMBAGByqGSM49AgEGBSuBBAAKBG0wawIBAQQgVcB/UNPxalR9zDYAjQIf
jojUDiQuGnSJrFEEzZPT/92hRANCAASc7UJtgnF/abqWM60T3XNJEzBv5ez9TdwK
H0M6xpM2q+53wmsN/eYLdgtjgBd3DBmHtPilCkiFICXyaA8z9LkJ
-----END PRIVATE KEY-----
</syntaxhighlight>
 
=== 포맷 변경 ===
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 출력파일명
[[분류:보안]]
편집
2,431