7

RackspaceCloud内のASP.NETWebサービス内でX509Certificateを使用しようとしています。証明書がクラウドノードに保存されているために問題が発生しているのではないかと感じています。iPhone Apple Push Notification Provider(apns-sharp)C#を使用しているときにSslStream.AuthenticateAsClient Exceptionで受信することを除いて、これに関連する質問もあります。

apns-sharpプロジェクト内で、次のコードを使用していました。

certificate = new X509Certificate2(p12File)

ただし、例外を受け取り、コードを次のように変更すると、X509Certificate2例外が解決されました。新しいコードは次のとおりです。

certificate = new X509Certificate2(p12File, String.Empty, X509KeyStorageFlags.MachineKeySet);

証明書ストアを使用せずにASP.NET内でX509Certificate2を使用できるかどうか知りたいですか?証明書ストアはRackspaceCloudノードで問題を引き起こしますか?

アップデート#1 Rackspaceによると、ローカルマシン証明書ストアへのアクセスは許可されていません。証明書ストアの使用をバイパスする他の方法はありますか?たぶんサードパーティのライブラリを使用していますか?

4

2 に答える 2

4

最初のコンストラクターが機能しない理由は、ASP.NETがユーザープロファイルストアをロードしないためです。これは、を使用して保存場所を指定しない場合のデフォルトのストアですX509KeyStorageFlags。ただし、マシンストアは常にASP.NETによって読み込まれるため、2番目のコンストラクターが機能します。

暗号化またはデジタル署名(ハッシュ)の作成に証明書の秘密鍵を使用する予定であると想定しています。この場合、秘密鍵にはインポートされた証明書からプログラムでのみアクセスできるため、証明書ストアの使用を避けることはできません。ブロブやファイルから直接ではありません。

証明書データに公開鍵のみが含まれている場合(保護する機密データがないため)、証明書ストアは使用されないと思います-証明書を操作する場合は、マシンストアを指定するだけでよいことに気付きました秘密鍵が含まれています。

ただし、Rackspaceの状況についてコメントすることはできません。秘密鍵コンテナをロードするには、アセンブリに付与されていない可能性のある特定のアクセス許可が必要なため、部分的に信頼された環境で実行されているコードで証明書をインポートする際に問題が発生する可能性があります。

于 2010-01-20T06:05:29.897 に答える
1

X509Certificate2をファイルからインポートし、次のコードを使用して秘密鍵と公開鍵の両方を使用できるようにしました。

            X509Certificate2 cert = new X509Certificate2();
            // Key Location: the physical file location (C:\cert.pfx)
            // Key Password: the password for the certificate
            cert.Import(keyLocation, keyPassword, X509KeyStorageFlags.Exportable);

私の経験では、それを機能させるための鍵はX509KeyStorageFlags.Exportableでした。それがないと、秘密鍵にアクセスできませんでした。

于 2010-02-23T16:09:14.960 に答える