Certificate 创建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

我一直在遵循一个指南,该指南涵盖了为Web API安全性签名授权令牌。其中一个方面是将X509证书作为Base-64字符串存储在web.config中。但是,关于如何获取X509证书并将其转换为Base-64字符串所需的步骤没有解释。我找到了一些关于如何使用OpenSSL生成X509证书的指南,但是对于使用哪些部分以及如何转换为Base-64,我仍然感到困惑。这就是我想要的结局

  • 可以存储在web.config中的证书的Base-64表示形式
  • 证书附带的密码
  • 我想在身份验证服务器中使用的代码是

    SigningCertificate = new X509Certificate2(certificate, password);
    
    其中,
    certificate
    是证书的基本64编码表示形式,
    password
    是签名证书密码

    因此,使用OpenSSL工具,我能够生成两个文件

    • 证书文件-MyCert.pem
    • 密钥文件-MyKey.pem
    问题#1-转换为Base-64时,我是否只需要使用
    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
            };