Manual/OpenSSL

[OpenSSL] PKCS#12 (PFX) 파일 λ§Œλ“€κΈ° λͺ…λ Ήμ–΄

JayKimπŸ™‚ 2023. 4. 7. 10:02

PKCS#12 λŠ” Personal Information Exchange Syntax λ‘œμ„œ RFC7292 에 μ •μ˜ 된 ν‘œμ€€ 포맷이닀.

P12 ν™•μž₯자 λ˜λŠ” pfx ν™•μž₯자 파일 μ²˜λ¦¬μ— λŒ€ν•œ OpenSSL λͺ…λ Ήμ–΄ μ‚¬μš©λ²•μ΄λ‹€.
이 λͺ…령어에 λŒ€ν•œ Man 파일 λ§ν¬λŠ” μ•„λž˜μ™€ κ°™λ‹€

https://www.openssl.org/docs/man3.0/man1/openssl-pkcs12.html

PKCS#12 파일 생성

openssl pkcs12 -export -in ecdsa_cert.pem -inkey ecdsa_private_key.pem -out file.p12 -name "My Certfiicate" -passout pass:asdf

μœˆλ„μš° κ²½μš°μ—λŠ” -passout pass:μ•”ν˜Έ 값을 μ£Όμž…μ„ μ΄λ ‡κ²Œ μ£Όμ–΄μ•Ό ν•˜μ§€λ§Œ
μœˆλ„μš°κ°€ μ•„λ‹Œ λ‹€λ₯Έ ν™˜κ²½μ—μ„œλŠ” -passout μ˜΅μ…˜μ„ μ•ˆμ£Όμ–΄λ„ λœλ‹€.
κ·Έ λ•ŒλŠ” 화면에 μž…λ ₯ν•˜λŠ” λ©”μ„Έμ§€κ°€ λœ¨λŠ”λ° κ·Έ λ•Œ μž…λ ₯ν•΄ μ£Όλ©΄ λœλ‹€.

이 P12 포맷에 λŒ€ν•œ ASN.1 λ‹€μŒκ³Ό κ°™λ‹€.

 -- ============================
 -- The PFX PDU
 -- ============================

 PFX ::= SEQUENCE {
     version    INTEGER {v3(3)}(v3,...),
     authSafe   ContentInfo,
     macData    MacData OPTIONAL
 }

 MacData ::= SEQUENCE {
     mac        DigestInfo,
     macSalt    OCTET STRING,
     iterations INTEGER DEFAULT 1
     -- Note: The default is for historical reasons and its use is
     -- deprecated.
 }

μƒμ„±ν•œ file.p12 νŒŒμΌμ„ BerEditor 둜 Decodeing ν•œ 화면이닀.

μΆ”κ°€ μΈμ¦μ„œ 포함 생성

openssl pkcs12 -export -in ecdsa_cert.pem -inkey ecdsa_private_key.pem -out file.p12 -name "My Certfiicate" -passout pass:asdf -certfile more_cert.pem

-certfile : μΆ”κ°€ν•  μΈμ¦μ„œ 파일 경둜

P12 λ‚΄ μΈμ¦μ„œλ₯Ό 파일둜 μ €μž₯ (-clcerts -nokeys)

openssl pkcs12 -in file.p12 -clcerts -nokeys -out file.crt

P12 λ‚΄ κ°œμΈν‚€λ₯Ό 파일둜 μ €μž₯

openssl pkcs12 -in file.p12 -nocerts -out file.key

P12 λ‚΄ κ°œμΈν‚€μ— pass phrase λ₯Ό μ μš©ν•˜μ§€ μ•Šκ³  파일둜 μ €μž₯

openssl pkcs12 -in file.p12 -out file.pem -nodes

P12 정보 좜λ ₯

openssl pkcs12 -info -in file.p12

μ΄λ•Œ νŒ¨μŠ€μ›Œλ“œ μž…λ ₯을 λ‘λ²ˆ λ°›κ²Œ λ˜λŠ” 데 μ²«λ²ˆμ§ΈλŠ” P12 νŒŒμΌμ— λŒ€ν•œ νŒ¨μŠ€μ›Œλ“œμ΄κ΅¬ λ‘λ²ˆμ§ΈλŠ” κ°œμΈν‚€ μ•”ν˜Έ νŒ¨μŠ€μ›Œλ“œμ΄λ‹€.
ν˜„μž¬ μœˆλ„μš° ν™˜κ²½μ€ νŒ¨μŠ€μ›Œλ“œ μž…λ ₯κ³Ό κ΄€λ ¨ν•΄μ„œλŠ” μ²˜λ¦¬κ°€ 잘 μ•ˆλ˜λŠ”κ±° κ°™λ‹€.

일반적으둜 μΈμ¦μ„œμ™€ κ°œμΈν‚€λ₯Ό 같이 λ¬Άμ–΄μ„œ μ‚¬μš© ν•  λ•Œ p12 λ˜λŠ” pfx λΌλŠ” ν™•μž₯자λ₯Ό μ‚¬μš©ν•˜λŠ”
PKCS#12 ν‘œμ€€μ— 따라 λ§Œλ“€μ–΄μ§€ νŒŒμΌμ„ μ‚¬μš© ν•œλ‹€κ΅¬ 보면 λœλ‹€.

λ°˜μ‘ν˜•