0

テスト環境で自己署名証明書を作成しています。ここに私がしていることの詳細があります。

http://www.hanselman.com/blog/SigningPowerShellScripts.aspx

私の簡単な手順は次のとおりです(目的は、証明書に基づいてコンピューターCとコンピューターAの間に信頼接続を確立することです)、

  1. makecert.exe を使用してコンピューター A をルート CA にします。
  2. ルート CA としてコンピューター A によって発行された証明書 B に自己署名します。
  3. 通信に使用する証明書として証明書 B をコンピューター A にインストールします。
  4. ルート CA (コンピューター A) をコンピューター C にインストール/信頼します。
  5. 次に、コンピューター C は、証明書 B を使用してコンピューター A の通信を信頼します。

私の混乱は、コンピューター C が証明書 B をインストールせずにコンピューター A を信頼していることです。ルート CA の証明書と相手方の証明書の両方をインストールする必要があると思います。コメントやアイデアはありますか?

前もって感謝します、ジョージ

4

3 に答える 3

2

少なくとも意味的には、ステップ 2 が正しくありません。CA によって署名された証明書を生成している場合、それは自己署名ではなく、CA によって署名されています。

したがって、マシン C では、生成された CA 証明書を信頼できる CA ストアに配置するだけで済みます。これを行うことで、署名されたものすべてを信頼していると言っていることになります。あなたの場合は証明書 B です。

ただし、これを通信に使用していると言います-失効をチェックするWCFのようなものを使用する場合は、生成されたCAがこれをサポートしないため、これをオフにする必要があることに注意してください。

于 2009-03-15T14:29:57.120 に答える
1

コンピューター C は、(コンピューター A 上の) ルート CA を信頼する必要があります。次に、同じルート CA によって発行された別のコンピューター (コンピューター D など) から提示された証明書は、自動的に信頼されます。

たとえば、Windows では、(既定で) Verisign のルート CA 証明書が既にあり、信頼されています。Verisign 証明書を使用する HTTPS サイトに移動すると、Verisign を信頼し、Verisign が HTTPS サイトに証明書を発行したため、自動的にそれを信頼します。

IOW - CA を信頼し、その証明書をインストールするだけです。

于 2009-03-15T14:24:28.147 に答える
1

コンピュータ A は、実際には「ルート CA」にはなりません。ルート証明書を作成し、ターゲット コンピューターにインストールする必要があります。

異なるアプリケーションが異なる証明書ストアを使用する可能性があるため、ターゲット コンピューターにルート証明書をインストールするほど単純ではありません。たとえば、Firefox と Explorer の両方にルート証明書をインストールする必要があります。

次に、ルート証明書によって署名された「子」証明書を作成できます。ターゲット システムは、信頼されたルート証明書によって署名されているため、子証明書を有効なものとして受け入れます。

証明書は、誰かの公開鍵を検証する方法にすぎません。証明書には、平文の公開鍵と、署名者の秘密鍵によって暗号化された公開鍵の両方が含まれています。証明書で公開されている公開鍵を検証するには、署名者の公開鍵を使用して暗号化された公開鍵を復号化し、それがプレーン テキスト版の公開鍵と同じであることを確認します。

自己署名証明書では、公開鍵を秘密鍵で暗号化します。したがって、チェーン内に上位の署名機関がないため、自己署名証明書もルート証明書です。

中間証明書を使用して、他の証明書に署名することもできます。このようにして、証明書を使用して、(少なくとも理論的には) 信頼されたルート証明書に戻る「信頼のチェーン」を構築できます。

Bruce Schneier は、彼の著書 "Applied Cryptography" でこれについて合理的な説明をしています。また、Peter Gutman は、このリンクで証明書についてよりカラフルな説明をしています。

http://www.cs.auckland.ac.nz/~pgut001/pubs/pkitutorial.pdf

于 2009-03-15T14:44:14.807 に答える