X509証明書情報で動作する必要があるコードがあります。私はこれを行うサンプルをダウンロードしました:.NETコードでX509証明書を操作する方法
const string CertWithoutPrivateKey = "MII....";
const string CertWithPrivateKey = "MII...";
public static SecurityToken GetSigningToken(bool includePrivateKey)
{
X509Certificate2 cert = null;
if (includePrivateKey)
{
cert = new X509Certificate2(
Convert.FromBase64String(CertWithPrivateKey),
"pw", X509KeyStorageFlags.PersistKeySet);
}
else
{
cert = new X509Certificate2(
Convert.FromBase64String(CertWithoutPrivateKey));
}
return cert;
}
コードは秘密鍵で証明書を取得できる必要があります。 Saml2AuthenticationModule(SAML 2.0プロトコルのWIF拡張機能)は、この秘密鍵を使用して、SAML IDプロバイダから送信された情報を復号化します。
証明書や暗号化についてよく分かりませんが、証明書をクラスにハードコードすることは安全ではないようです。
私のコードで秘密鍵で証明書を取得するにはどうすればよいですか? Afaik、このコードはアプリの起動時に一度しか実行されません(アプリプールのリサイクル後もそうです)。私ができる
:
- ストアのconfigファイル内のAppSettingとしてCERT。 appSettingsが暗号化されている限り、これは安全ですか?
- 証明書をデータベースに格納します。
- 証明書をbin/App_Dataにファイルとして保存します。これはWeb上で読むことができないことを意味しますが、ホストサーバーにアクセスできる人なら誰でも簡単に見ることができます。私のサーバーに誰かが入ることができれば、この証明書を読ませることはおそらく私の心配の中では最少です。
その他のオプションはありますか?この場合、最も適切なのは何ですか?
さらに、セキュリティの観点から、オプション1〜3が望ましいとは思わない。すべてがWindowsの証明書ストアで生きて管理されるべきです。 –
答えをありがとう。問題は、これらのWIF拡張機能はCTPにあります:(identityModel設定には信頼できる発行者(IdP)の拇印がありますが、この証明書は私のアプリケーション用です(サービスプロバイダ)。これは、X509Storeのインスタンスを使用して行うことができます。 – danludwig