TLSを使用してサイトに接続するためにPythonとOpenSSLを使用しています(一部のクロスプラットフォームソフトウェアでは、すべてのCryptoAPIに切り替えるにはあまりにも多くの作業が必要になります)。しかし、私は証明書のカスタムリストを配布(および更新)したくありません。私はプラットフォームからそれらを取得したい。 OS XとLinuxでは、これはかなり簡単ですが、WindowsにはTLS用の信頼できるルート証明機関の不完全なリストが付属しています。基本的にはMicrosoft自身の証明書だけを使用して、高レベルのTLSの処理(HTTPS経由のInternet ExplorerでWebページを読み込むなど)が以前には見られなかった信頼ルートを確認する必要があるときに、 (This process is explained here.)これは私がenumerate the Windows root certificate store with wincertstore
を意味することができることを意味しますが、最近インストールされたOSが搭載されているマシンでは、そのストアはほとんど空になるため、役に立たなくなります。Windows上で信頼できるルート証明書のリストを事前に取得するためのAPIはありますか?
Microsoftは厳密に制御されたネットワークアクセスを持つコンピュータを操作できるように、この一覧を事前に取得するようにdetailed instructions for administratorsを提供しています。しかし、私は同じことをするAPIへの参照を見つけることができず、Microsoftからすべての信頼できるルート証明書をダウンロードするだけです。 (正直なところ、毎週のマルチメガバイトのシステムアップデート時代には、キャッシュをダウンロードするだけで、これをダウンロードするのは大したことではありません。なぜボーナスポイントが必要なのか説明してください)
したがって、使用するルールに応じて信頼できるルート証明書をプリキャッシュするようにシステムに指示するAPIはありますか?それが本当に不可能な場合(つまり、CryptoAPIが一度に1つの信頼ルートしかダウンロードできない場合、そのルートによって署名された証明書を送る場合のみ)、OpenSSL証明書検証をCryptoAPIの信頼ストアに接続する方法があります。ネイティブTLS接続と同様に、検証でダウンロードして信頼ルートをキャッシュしますか?
興味深い。私は彼らがほとんどの時間中断し続けるので、私は私のVM上でこれを見ていないと思いますか? – Glyph
@HarryJohnston - おそらく、このコマンドを実行することは、プログラムでこれを行う正しい答えです。しかし、私たちがサブプロセスを必要としないように呼び出すAPIを知っていることは理想的です。 – Glyph
したがって、 'certutil -syncWithWU'は証明書をディレクトリに置くだけです。 '' ROOT ''ストアには保存されません。どこにいても構いません。 – Glyph