我将如何生成身份服务器签名证书
How would I generate the Identity Server signing certificate
在身份服务器示例中,我们在 Startup.cs
中找到了这样的代码
var certFile = env.ApplicationBasePath + "\idsrv3test.pfx";
var signingCertificate = new X509Certificate2(certFile, "idsrv3test");
我将如何为生产场景替换它?
以下是我如何从我的配置中的指纹加载它:
Click here to see image
获取专用证书 - 通过您的 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];
}
}
最近我决定改进我的令牌签名发行流程。如果您是 运行 Windows 10,则可以使用名为 New-SelfSignedCertificate 的超棒 powershell cmdlet。
这是我的示例用法:
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 标志。它指定将增强型密钥用法字段设置为 "Code Signing" 值。您可以尝试使用的算法、密钥长度,甚至可以参考以下 documentation 页面添加扩展。
在身份服务器示例中,我们在 Startup.cs
var certFile = env.ApplicationBasePath + "\idsrv3test.pfx";
var signingCertificate = new X509Certificate2(certFile, "idsrv3test");
我将如何为生产场景替换它?
以下是我如何从我的配置中的指纹加载它: Click here to see image
获取专用证书 - 通过您的 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];
}
}
最近我决定改进我的令牌签名发行流程。如果您是 运行 Windows 10,则可以使用名为 New-SelfSignedCertificate 的超棒 powershell cmdlet。
这是我的示例用法:
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 标志。它指定将增强型密钥用法字段设置为 "Code Signing" 值。您可以尝试使用的算法、密钥长度,甚至可以参考以下 documentation 页面添加扩展。