0

CApublicおよびがあることに関して、私は証明書についてほとんど何も知りませprivate keyん。を使用してSSOログインを作成していますが、要素SAML 2を追加することを除いて作業してい<Signature>ます。

証明書の作成:

makecert.exeディレクトリにandのコピーがありpvk2pfx.exeます。開いcmdて次のように入力します。

makecert -r -pe -n "CN=Test Cert" -sky exchange -sv testcert.pvk testcert.cer

ダイアログ ボックスが表示され、パスワードとパスワードの確認を求められます。これを入力します。別のダイアログ ボックスがポップアップ表示され、パスワードを要求されます (これは、以前に入力したものと同じだと思います)。これによりtestcert.cer、同じディレクトリに が作成されます。

次に、これを入力しますcmd

pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx

編集:パスワードを要求されます。private keyを作成したときと同じパスワード ( ) を入力しますcer

pfxディレクトリにファイルを作成します。


ここで私は混乱しています。cerファイルをにインポートするとMMC、アクセスできます。

        X509Certificate2 cert = null;

        var store = new X509Store(StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);

        var storeCollection = store.Certificates.Find(X509FindType.FindBySubjectName, "Test Cert", false);
        if (storeCollection.Count == 1)
        {
            cert = storeCollection[0];
        }

        if (cert == null)
        {
            throw new ArgumentNullException("Certificate", "No certificate found.");
        }

        store.Close();

ただし、これを行うと、秘密鍵 (プロパティ) はnull. 秘密鍵がpfxファイルにあると読みました。したがって、ストアにアクセスする代わりに、次のようにします。

privateKeyを使用して証明書を作成するときに使用した秘密鍵ですmakecert.exe

X509SigningCredentials clientSigningCredentials = new X509SigningCredentials(
     X509Certificate2(@"c:\directory\testcert.pfx", privateKey, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable));

エラーが表示されます:The specified network password is not correct.

また、ファイルの代わりに にpfxファイルをインポートしようとしました。パスワードを要求されます。を使用して証明書を作成するために使用したパスワードを入れました。パスワードが間違っていることを常に教えてくれます。MMCcermakecert.exe

私は何を間違っていますか?

4

1 に答える 1

0

makecertpvk2pfxはどういうわけか間違っていたと思います。これが答えではないことはわかっていますが、この気の利いた小さなツールを見つけました:

PluralSight の自己証明書

基本的には同じことをしましたが、証明書を表示すると、次のようになりました。

この証明書に対応する秘密鍵を持っています

testcert.cerにはこれがありませんでした。

今コード

X509SigningCredentials clientSigningCredentials = new X509SigningCredentials(
 X509Certificate2(@"c:\directory\testcert.pfx", privateKey, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable));

問題なく戻ってきて、私の SAML アサーションは準備万端です。

于 2015-02-25T18:11:15.287 に答える