問題タブ [certificate-store]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Git-For-Windows が自己署名 SSL 証明書を読み取らない
GPO を介して CA 証明書を信頼されたルート証明機関に展開すると、クライアント マシンに展開されていることがわかります。署名済みの SSL 証明書を使用してサイトを閲覧するときに Chrome がうめき声を上げなくなったため、この部分が機能していることはわかっています。
ただし、この CA によって署名された SSL 証明書の背後にあるリポジトリに git clone または push しようとすると、git-for-windows が失敗して次のように言います。
schannel: 次の InitializeSecurityContext が失敗しました: 不明なエラー (0x80092012) - 失効関数は、証明書の失効を確認できませんでした。
ご覧のとおり、schannel を有効にしましたが、git-for-windows は明らかに Windows の証明書ストアから CA 証明書を読み取っていません。Windowsの証明書ストアからgfwを読み取る方法を知っている人はいますか? この証明書をすべての Windows クライアントに手動でコピーすることはできません。
複数の Samba 4 インスタンスをドメイン コントローラーとして使用していますが、AS 証明書サービスなどの Windows Server ツールにアクセスできないことに注意してください。
注意してください。TLS検証を無効にできることは知っていますが、それは確かに目的を無効にします。
c++ - サポートされているメモリ ストアと証明書信頼リストを備えた CertGetCertificateChain
証明書チェーンの検証中にカスタムの自己署名ルート証明書を信頼できるものとしてマークする必要があり、全体として、可能な限りシステム API に依存したいと考えています。
一時的なメモリ ストアを作成します。
次に、カスタム ルート証明書をストアに配置します。
CertGetCertificateChain MSDNのドキュメントには
hAdditionalStore サポートする証明書と証明書信頼リスト (CTL) を検索するための追加ストアへのハンドル。
私が理解している限り、ルート証明書を使用して CTL を作成し、それをストアに配置すると、CertGetCertificateChain はそれを信頼します。そのため、割り当てられたバッファーにルート証明書 CTL エントリを作成し、それをstd::vector ctlEntriesにコピーします。
次に、CTL 自体を作成します。
上記の API 呼び出しはすべて正常に終了しますが、CertGetCertificateChain を呼び出すと、TrustStatus.dwErrorStatus で CERT_TRUST_IS_UNTRUSTED_ROOT が返されます。
考えられる回避策
CERT_TRUST_IS_UNTRUSTED_ROOT エラーが発生した場合は、証明書ストアから CTL を抽出し、結果チェーン (CertGetCertificateChain によって返される) のルートが CTL にあるかどうかを確認します。それは機能しますが、まだ完全に受け入れられるわけではありません。CertGetCertificateChain に依存したいと思います。
ソリューションの何が問題になっていますか? どの特定の証明書信頼リスト OID を使用する必要がありますか? この場合、ルート証明書を信頼するための要件 (特定の拡張機能など) はありますか?
ps テスト証明書は、この命令を使用して作成されます https://gist.github.com/fntlnz/cf14feb5a46b2eda428e000157447309
更新日: 2020-01-31
CertModifyCertificatesToTrust は役に立ちませんでした。正常に終了しますが、チェーンはまだ信頼されていないルートを持つと報告されます。おそらく、問題は別の領域にあります。
}