アイデンティティサーバーのサンプルでは、Startup.cs
var certFile = env.ApplicationBasePath + "\\idsrv3test.pfx";
var signingCertificate = new X509Certificate2(certFile, "idsrv3test");
これを生産シナリオに置き換えるにはどうすればよいですか?
専用の証明書を取得します-PKIまたは自己生成証明書を使用します:
http://brockallen.com/2015/06/01/makecert-and-creating-ssl-or-signing-certificates/
キーペアをWindows証明書ストアにインポートし、実行時にそこからロードします。
セキュリティを強化するために、一部の人々は、専用デバイス(HSMと呼ばれる)または専用マシン(ファイアウォールの背後など)にキーを展開します。 ITokenSigningService
により、実際のトークン署名をその別のマシンに移動できます。
記録については、RuSsが投稿した画像で提案されているコード:
options.SigningCertificate = LoadCertificate();
public X509Certificate2 LoadCertificate()
{
string thumbPrint = "104A19DB7AEA7B438F553461D8155C65BBD6E2C0";
// Starting with the .NET Framework 4.6, X509Store implements IDisposable.
// On older .NET, store.Close should be called.
using (var store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
var certCollection = store.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, validOnly: false);
if (certCollection.Count == 0)
throw new Exception("No certificate found containing the specified thumbprint.");
return certCollection[0];
}
}
構成のin印から読み込む方法は次のとおりです。 画像を表示するにはここをクリック
最近、トークン署名発行プロセスを改訂することにしました。 Windows 10を実行している場合、New-SelfSignedCertificateという素晴らしいpowershellコマンドレットを使用できます。
これが私の使用例です:
New-SelfSignedCertificate -Type Custom
-Subject "CN=TokenSigningForIdServer"
-TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3")
-KeyUsage DigitalSignature
-KeyAlgorithm RSA
-KeyLength 2048
-CertStoreLocation "Cert:\LocalMachine\My"
管理者としてコマンドを実行していることを確認してください。証明書の詳細を取得するには、certlm.mscを開きます。 Personal\Certificatesの下に保存する必要があります。
-TextExtentionフラグを除いて、ほとんどのフラグは明らかです。 Enhaced Key Usageフィールドが「Code Signing」値に設定されることを指定します。次の documentation ページを参照することで、使用されるアルゴリズム、キーの長さ、エクステントソンを追加することもできます。