我一直在遵循指南,该指南涵盖了为Web API安全性签署授权令牌。其中一个方面是将X509证书存储为web.config中的Base-64字符串。但是,没有解释如何获取X509证书并将其转换为Base-64字符串所需的步骤。我找到了一些关于如何使用OpenSSL生成X509证书的指南,但我仍然对使用哪些部分以及如何转换为Base-64感到困惑。这就是我想要的结果。
我想在我的身份验证服务器中使用的代码是..
SigningCertificate = new X509Certificate2(certificate, password);
其中certificate
是证书的Base 64编码表示,password
是签名证书密码。
因此,使用OpenSSL工具,我可以生成两个文件......
问题#1 - 转换为Base-64时,我只需要使用MyCert.pem
文件吗?或者两个文件是否需要在表示为Base-64之前将这两个文件合并为一个PFX
文件?
问题#2 - 我是否可以使用接受文件然后导出Base-64字符串的实用程序?
答案 0 :(得分:1)
问题#1 - 转换为Base-64时,我只需要使用MyCert.pem文件吗?或者两个文件是否需要在表示为Base-64之前将两个文件合并为一个PFX文件?
PEM 文件格式在base64中编码。它可以应用于私钥,证书或证书签名请求。这些文件有一个标题/英尺,可以从----BEGIN PRIVATE KEY----
或----BEGIN CERTIFICATE----
PFX 是私钥和受密码保护的证书的容器。您需要包含两个PEM文件。 PFX以pkcs#12格式(二进制)编码。
将证书与密钥文件连接,然后让OpenSSL将其转换为PKCS#12(PFX)
cat MyKey.pem MyCert.pem > cert.pem
openssl pkcs12 -export -in cert.pem -out mykeystore.p12 -name myalias
#Enter Export Password:
如果您使用此service(我在谷歌搜索过),您将需要pkcs12文件和指定的密码
问题#2 - 我是否可以使用接受文件然后导出Base-64字符串的实用程序?
我通常使用带有MIME插件的Notepad ++等短信。或者,如果需要以编程方式执行,所有编程语言都有一种将字节数组转换为Base64的方法。
答案 1 :(得分:0)
考虑到您具有本地IIS,这是在.NET中获取有效证书的方法:
要获取Base64字符串,可以在C#上使用以下代码:
var certificate = Convert.ToBase64String(File.ReadAllBytes(@"C:\Temp\DemoCert.pfx"));
我将base64字符串和密码存储在我的Web配置中,如下所示:
<appSettings>
<add key="SigningCertificate" value="MIIKLwIBAzCCCesGCSqGSIb3DQEHAaCCCdwk...." />
<add key="SigningCertificatePassword" value="password"/>
</appSettings>
(1)您在key =“ SigningCertificatePassword”属性中使用的密码与创建证书时使用的密码相同。
然后在我的Startup.cs类中使用它:
var certificate = Convert.FromBase64String(ConfigurationManager.AppSettings["SigningCertificate"]);
var options = new IdentityServerOptions
{
SigningCertificate = new X509Certificate2(certificate, ConfigurationManager.AppSettings["SigningCertificatePassword"]),
RequireSsl = false,
Factory = factory
};