openssl로 pfx 파일의 암호화 방법을 추측합니다.

5468 단어 pfx 인증서openssl
(메모 용입니다)

Windows 버전에 따라 証明書のエクスポート ウィザード 화면에서 암호화를 선택할 수 있습니다 (秘密キーをエクスポートします를 선택한 경우).



AES256-SHA256을 선택한 경우의 문제점


AES256-SHA256 에서 내보낸 pfx를 Windows Server 2016에서 가져오려고 할 때 문제가 발생했습니다.

PowerShell Import-PfxCertificate cmdlet에서 pfx를 가져 오려고하면,
- Import-PfxCertificate : The PFX file you are trying to import requires either a different password or membership in an Active Directory principal to which it is protected. 라는 수수께끼 오류 발생
X509Certificate2.Import에서 가져 오기를 시도하면,
- The specified network password is not correct 라는 수수께끼 오류 발생

가져오기에 사용한 비밀번호가 잘못되지 않는다면 어떨까요?

pfx 파일 형식에 대해 알아보기



pfx 파일에 적용한 암호화 방식을 알 수 있습니까?

Google 검색 중 Which encryption algorithm is used in password protected *.pfx/PKCS 12 certificates?에 요청한 답변이있었습니다.

TL;DR: The PKCS#12 format only specifies the structure of the file, it does not list which algorithms are legal, so the actual encryption algorithm used will depend on which software was used to create the .p12 file.

[Bing 번역] DR: PKCS # 12 形式はファイルの構造を指定するだけで、どのアルゴリズムが有効かはリストされないので、使用される実際の暗号化アルゴリズムは、. p12 ファイルの作成に使用されたソフトウェアによって異なります。
그렇다고 해서… 「암호화에 사용한 암호화 방식을 알기 위해서는, 올바른 패스워드를 사용해 해독에 성공하는 다른 없다」라고 하는 것 같습니다.

추가 검색을 통해 pfx 파일을 덤프하는 방법을 찾았습니다. 이 출력을 보고 뒷받침을 받았습니다.
openssl.exe asn1parse -inform der -in CodeSign.pfx -i -dump

덤프의 일부
    0:d=0  hl=4 l=6854 cons: SEQUENCE          
    4:d=1  hl=2 l=   1 prim:  INTEGER           :03
    7:d=1  hl=4 l=6770 cons:  SEQUENCE          
   11:d=2  hl=2 l=   9 prim:   OBJECT            :pkcs7-data
   22:d=2  hl=4 l=6755 cons:   cont [ 0 ]        
   26:d=3  hl=4 l=6751 prim:    OCTET STRING      
      0000 - 30 82 1a 5b 30 82 06 51-06 09 2a 86 48 86 f7 0d   0..[0..Q..*.H...
...
      1a50 - d2 3a 16 7c 9d d2 5f 01-09 16 4a d0 d0 ad 82      .:.|.._...J....
 6781:d=1  hl=2 l=  75 cons:  SEQUENCE          
 6783:d=2  hl=2 l=  47 cons:   SEQUENCE          
 6785:d=3  hl=2 l=  11 cons:    SEQUENCE          
 6787:d=4  hl=2 l=   9 prim:     OBJECT            :sha256
 6798:d=3  hl=2 l=  32 prim:    OCTET STRING      
      0000 - 24 51 85 f0 cf 5b 86 af-75 0d 27 b8 c7 f9 55 48   $Q...[..u.'...UH
      0010 - 11 b5 52 00 a2 34 17 e3-39 25 1c f8 ea 02 4c 97   ..R..4..9%....L.
 6832:d=2  hl=2 l=  20 prim:   OCTET STRING      
      0000 - 92 bd 0f 1a a9 ef 70 f6-84 72 68 8c 0f 73 40 6f   ......p..rh..s@o
      0010 - 1f 2e bb d1                                       ....
 6854:d=2  hl=2 l=   2 prim:   INTEGER           :07D0
:pkcs7-data 의 내용이라고 생각된다 OCTET STRING 가 덤프가 되어 있으므로…
어떠한 암호화가 실시되고 있는 것으로 생각됩니다.

덤프 뒤에 :sha256라는 문구가 발견되었습니다.
이것이 암호화 지정과 관련이 있는지 확인합니다.
AES256-SHA256 로 암호화한 경우
...
 6811:d=1  hl=2 l=  75 cons:  SEQUENCE
 6813:d=2  hl=2 l=  47 cons:   SEQUENCE
 6815:d=3  hl=2 l=  11 cons:    SEQUENCE
 6817:d=4  hl=2 l=   9 prim:     OBJECT            :sha256
 6828:d=3  hl=2 l=  32 prim:    OCTET STRING
      0000 - 99 5e 94 b6 fc c0 09 dd-b1 cb 03 c6 50 64 68 8d   .^..........Pdh.
      0010 - d9 8e c0 0e 5f 0c 3e 98-83 a5 59 18 1d f2 3b 1b   ...._.>...Y...;.
 6862:d=2  hl=2 l=  20 prim:   OCTET STRING
      0000 - da 13 a3 70 f3 2b e1 fc-cb 2c d5 a7 08 4f 6e e7   ...p.+...,...On.
      0010 - b7 10 98 bf                                       ....
 6884:d=2  hl=2 l=   2 prim:   INTEGER           :07D0
TripleDES-SHA1 로 암호화한 경우
...
 6677:d=1  hl=2 l=  59 cons:  SEQUENCE
 6679:d=2  hl=2 l=  31 cons:   SEQUENCE
 6681:d=3  hl=2 l=   7 cons:    SEQUENCE
 6683:d=4  hl=2 l=   5 prim:     OBJECT            :sha1
 6690:d=3  hl=2 l=  20 prim:    OCTET STRING
      0000 - 33 71 f9 6e e5 1e 56 d7-7e d8 6e b4 6d 62 ea 07   3q.n..V.~.n.mb..
      0010 - 45 ad 4f 56                                       E.OV
 6712:d=2  hl=2 l=  20 prim:   OCTET STRING
      0000 - 57 f7 83 26 ac f4 f0 a4-29 a9 7e 6b 79 8c b1 e8   W..&....).~ky...
      0010 - 97 ce c2 17                                       ....
 6734:d=2  hl=2 l=   2 prim:   INTEGER           :07D0

결과, 관련이 있었다 :
  • :sha1가 포함되어 있으면 TripleDES-SHA1로 암호화되었을 수 있습니다.
  • :sha256가 포함되어 있으면 AES256-SHA256로 암호화되었을 수 있습니다.

    그래서 인증서 가져 오기 오류 The specified network password is not correct
  • 가져올 때 암호가 올바르더라도 발생할 수 있습니다.
  • 「어떤 암호화 방식을 사용해 암호화했는가」의 정보는 pfx 파일에 기재가 없다고 하는 것.
  • Windows 버전이 오래된 경우 AES256-SHA256로 암호화된 pfx 파일을 해독할 수 없는 것일 수 있습니다.

  • 그 pfx 파일이 AES256-SHA256 로 암호화하고 있을지 어떨지는,
  • openssl.exe asn1parse -inform der -in CodeSign.pfx -i -dump 명령의 출력에 :sha256 라는 문언이 포함되어 있는지 어떤지로 추측이 가능.


  • 라는 것을 알았습니다.

    좋은 웹페이지 즐겨찾기