在自己签发CA证书和颁发X509证书时,私钥通过下面的方法保存为PEM 相关代码可以已经提交在了 https://github.com/q2g/q2g-helper-pem-nuget/pull/13

  public static void SavePem(this X509Certificate2 @this, out string cert, out   string privateKey)
{
cert = string.Empty;
privateKey = string.Empty;
try
{
if (@this.HasPrivateKey)
{
#if NET452
var p = (@this.PrivateKey as RSACryptoServiceProvider).ExportParameters(true);
#else var p = @this.GetRSAPrivateKey().ExportParameters(true);
#endif
var key = new RsaPrivateCrtKeyParameters(
new Org.BouncyCastle.Math.BigInteger(, p.Modulus), new Org.BouncyCastle.Math.BigInteger(, p.Exponent), new Org.BouncyCastle.Math.BigInteger(, p.D),
new Org.BouncyCastle.Math.BigInteger(, p.P), new Org.BouncyCastle.Math.BigInteger(, p.Q), new Org.BouncyCastle.Math.BigInteger(, p.DP), new Org.BouncyCastle.Math.BigInteger(, p.DQ),
new Org.BouncyCastle.Math.BigInteger(, p.InverseQ));
using (var stringWriter = new StringWriter())
{
var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(stringWriter);
pemWriter.WriteObject(key);
privateKey = stringWriter.GetStringBuilder().ToString();
}
}
cert = PemCertificateHelper.ExportCertificateToPEM(@this);
}
catch (Exception ex)
{
throw new Exception($"Certificate could not be saved. ", ex);
}
} public static void SavePem(this X509Certificate2 @this, string certFile, string privateKeyFile = null)
{
try
{
Directory.CreateDirectory(Path.GetDirectoryName(certFile));
if (!string.IsNullOrEmpty(privateKeyFile) && @this.HasPrivateKey)
{
Directory.CreateDirectory(Path.GetDirectoryName(privateKeyFile));
#if NET452
var p = (@this.PrivateKey as RSACryptoServiceProvider).ExportParameters(true);
#else var p = @this.GetRSAPrivateKey().ExportParameters(true);
#endif
var key = new RsaPrivateCrtKeyParameters(
new Org.BouncyCastle.Math.BigInteger(, p.Modulus), new Org.BouncyCastle.Math.BigInteger(, p.Exponent), new Org.BouncyCastle.Math.BigInteger(, p.D),
new Org.BouncyCastle.Math.BigInteger(, p.P), new Org.BouncyCastle.Math.BigInteger(, p.Q), new Org.BouncyCastle.Math.BigInteger(, p.DP), new Org.BouncyCastle.Math.BigInteger(, p.DQ),
new Org.BouncyCastle.Math.BigInteger(, p.InverseQ));
using (var sw = new StreamWriter(privateKeyFile))
{
var pemWriter = new Org.BouncyCastle.OpenSsl.PemWriter(sw);
pemWriter.WriteObject(key);
}
}
File.WriteAllText(certFile, PemCertificateHelper.ExportCertificateToPEM(@this));
}
catch (Exception ex)
{
throw new Exception($"Certificate could not be saved. cert: {certFile} - key: {privateKeyFile}", ex);
}
}

.Net Core 中X509Certificate2 私钥保存为 pem 的方法的更多相关文章

  1. .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)

    .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...

  2. JavaScript在浏览器中把文本保存为文件的方法

    JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...

  3. OPENSSL中RSA私钥文件(PEM格式)解析【一】

    http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...

  4. asp.net core中遇到需要自定义数据包解密方法的时候

    最近将公司的项目用.netcore重写, 服务的http外部接口部分收发消息是DES加解密的, 那么在asp.net core mvc的action处理之前需要加入解密这个步骤. 我第一想到的是用fi ...

  5. [小技巧]EF Core中如何获取上下文中操作过的实体

    原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...

  6. Net Core中数据库事务隔离详解——以Dapper和Mysql为例

    Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...

  7. ASP.NET CORE中使用Cookie身份认证

    大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cook ...

  8. .NET Core中的数据保护组件

    原文地址: PREVENTING INSECURE OBJECT REFERENCES IN ASP.NET CORE 2.0 作者: Tahir Naushad 背景介绍 在 OWASP(开放式 W ...

  9. .NET Core中复制源文件夹下的所有内容到新文件夹

    .NET Core中没有原生的复制文件夹方法,我们可以自己写个: 新建一个.NET Core控制台项目,示例代码如下: using System; using System.IO; namespace ...

随机推荐

  1. CodeForces - 357D - Xenia and Hamming

    先上题目: D. Xenia and Hamming time limit per test 1 second memory limit per test 256 megabytes input st ...

  2. lead 函数和 lag函数

    这两个函数的作用只能通过例子来解释,否则说不明白. 首先创建一个表 SQL> create table test (id number, name varchar2(8), val number ...

  3. hive 报错/tmp/hive on HDFS should be writable. Current permissions are: rwx--x--x

    启动hive时报例如以下错误:/tmp/hive on HDFS should be writable. Current permissions are: rwx--x--x 这是/tmp/hive文 ...

  4. 【搜索】 HDU 3533 Escape BFS 预处理

    要从0,0 点 跑到m,n点  路上会有k个堡垒发射子弹.有子弹的地方不能走,子弹打到别的堡垒就会消失,或者一直飞出边界(人不能经过堡垒 能够上下左右或者站着不动 每步都须要消耗能量  一共同拥有en ...

  5. 加州理工学院公开课:机器学习与数据挖掘_Regularization(第十二课)

    课程简单介绍: 接上一节课,这一节课的主题是怎样利用 Regularization 避免 Overfitting.通过给如果集设定一些限制条件从而避免  Overfitting,可是如果限制条件设置的 ...

  6. web 前端学习笔记

    <!DOCTYPE HTML> <head> <style type="text/css"> body {  background: #ff00 ...

  7. WingIDE4.1 破解及支持中文设置

    1.下面提供最新版本的破解方法. 先到http://wingware.com/downloads/wingide下载最新版本的IDE. 安装之前,先修改时间到一个月前. 安装 安装之后然后获取试用版的 ...

  8. Java 8 实战 P3 Effective Java 8 programming

    目录 Chapter 8. Refactoring, testing, and debugging Chapter 9. Default methods Chapter 10. Using Optio ...

  9. 如何修改vos2009/vos3000的web端口?

    vos 2009. VOS 3000 2120 -2138版本在这里 /usr/apache-tomcat-5.5.15/conf 编辑 server.xml 找到 <!-- Define a ...

  10. .sh文件 编写格式

    http://blog.sina.com.cn/s/blog_54f82cc201010hfz.html 介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号# ...