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