web-dev-qa-db-ja.com

asn1parseがすべてのDERエンコード文字列を解析しないのはなぜですか?

次の内容を含むファイル-crl.txtがあります。

MDYwNKAyoDCGLmh0dHA6Ly93d3cyLnB1YmxpYy10cnVzdC5jb20vY3JsL2N0L2N0cm9vdC5jcmw=

特定のX.509証明書の拡張機能の1つからのものです。次のコマンドを実行しても何も起こらないのはなぜですか?

openssl asn1parse -inform PEM -in crl.txt -i

これがその文字列の16進エンコーディングです。

00000000  30:36:30:34:a0:32:a0:30:86:2e:68:74:74:70:3a:2f  0604.2.0..http:/
00000010  2f:77:77:77:32:2e:70:75:62:6c:69:63:2d:74:72:75  /www2.public-tru
00000020  73:74:2e:63:6f:6d:2f:63:72:6c:2f:63:74:2f:63:74  st.com/crl/ct/ct
00000030  72:6f:6f:74:2e:63:72:6c                          root.crl

DERデコード(私が間違っていない限り)は次のとおりです。

SEQUENCE {
  SEQUENCE {
    [0] {
      [0] {
        [6] 'http://www2.public-trust.com/crl/ct/ctroot.crl'
        }
      }
    }
  }

これはid-ce-cRLDistributionPoints拡張です。最初の[0]はdistributionPoint用、2番目の[0]はfullName用、[6]はuniformResourceIdentifier(暗黙的にエンコードされたIA5String)用です。

3
compcert

OpenSSL 0.9.8rでは、次のようになります。

_$ cat crl.txt
MDYwNKAyoDCGLmh0dHA6Ly93d3cyLnB1YmxpYy10cnVzdC5jb20vY3JsL2N0L2N0cm9vdC5jcmw=
$ /usr/bin/openssl asn1parse -inform PEM -in crl.txt -i
    0:d=0  hl=2 l=  54 cons: SEQUENCE          
    2:d=1  hl=2 l=  52 cons:  SEQUENCE          
    4:d=2  hl=2 l=  50 cons:   cont [ 0 ]        
    6:d=3  hl=2 l=  48 cons:    cont [ 0 ]        
    8:d=4  hl=2 l=  46 prim:     cont [ 6 ]
_

OpenSSLが「何もしない」場合は、OpenSSLまたはコンピューターに問題があります。

「PEM」、stricto sensuはBase64用であることに注意してくださいヘッダーとフッター付き:_-----BEGIN FOO-----_で始まり(FOOから)、_-----END FOO-----_で終わる必要があります。 OpenSSLは、ヘッダーのないBase64の処理を受け入れるのにかなり都会的です(または、あなたの場合はそうでないかもしれません).

1
Thomas Pornin