46

ネットワーク セキュリティ構成に関する N Developer Preview のドキュメントには、次の手順が記載されています。

証明書のピン留めは、公開鍵のハッシュ (X.509 証明書の SubjectPublicKeyInfo) によって一連の証明書を提供することによって行われます。証明書チェーンは、証明書チェーンにピン留めされた公開鍵が少なくとも 1 つ含まれている場合にのみ有効です。

彼らが示す XML は壊れています (終了タグがありません) が、ハッシュが SHA256 でエンコードされた base64 であることを示唆しています。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">example.com</domain>
        <pin-set expiration="2018-01-01">
            <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin>
            <!-- backup pin -->
            <pin digest="SHA-256">fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=</pin>
    </domain-config>
</network-security-config>

このようなハッシュを作成するにはどうすればよいでしょうか?

私はこの要点でアプローチを試みましたが、openssl x509 -inform der -pubkey -noout私の CRT ファイルが好きではありません。問題が CRT ファイルにあるのか、説明書にあるのか、自分のバージョンのopensslにあるのか、それ以外にあるのか、すぐには判断できません。

このハッシュを作成するための既知の優れたレシピを知っている人はいますか?

4

4 に答える 4

0

証明書チェーン全体をピン留めする必要がある人のために、幸運にも Anaconda がインストールされている Windows 10 マシンで行った手順を次に示します。

  1. Chrome または Edge から証明書ファイルを保存します。(.P7B) として保存するオプションを選択し、「すべての証明書を含める..」を確認してください。

  2. ファイルをダブルクリックします。これにより、Windows certmgr が起動します。

  3. [Certificates] をクリックすると、証明書チェーンのエントリが表示されます。

  4. 各証明書チェーン エントリを右クリックします。すべてのタスクを選択してエクスポートします。

  5. DER エンコード (.CER) を選択

  6. それぞれについて繰り返します(階層に注意してください)

  7. Anaconda プロンプトを開始します。

  8. 各ファイルに対して @Alex Klyubin / @Gal Rom (上記) の優れたコマンドを実行します。

    openssl x509 -inform DER -in prod_root.cer -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -バイナリ | openssl enc -base64

  9. 生成されたファイルごとに。出力は必要なsha256になります

これが誰かに役立つことを願っています。チェーン全体を抽出しようとして非常に行き詰まりました。これを行うためのより良い方法があると確信していますが、うまくいきました。

于 2020-08-11T03:56:37.797 に答える