在自己签发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. N天学习一个linux命令之ssh

    用途 通过加密连接,远程登录主机和在远程主机执行命令,也可以用于转发x11和tcp,也可用于搭建VPN.第一次连接时,会弹出远程主机公钥指纹确认信息,通过这个方式防止中间人攻击. 用法 ssh [op ...

  2. N天学习一个Linux命令之sudo

    前言 新项目打算采用运维搭建的发布系统发代码,发布后生效前需要做一些处理,因为发布系统登录目标机器使用的是非root账号,所以需要使用sudo来提升权限.当执行sudo cd /xxx/xx时会提示报 ...

  3. web项目log日志查看分析->流程理解

    1.DEBUG [2017-07-10 11:38:41,705][] org.springframework.web.servlet.DispatcherServlet:865 - Dispatch ...

  4. [WebView学习之二]:使用Web Apps 支持不同分辨率屏

    上一篇我们学习了(1.[WebView学习之中的一个]:Web Apps简单介绍),今天我们来继续学习. (博客地址:http://blog.csdn.net/developer_jiangqq),转 ...

  5. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

  6. 浅谈PHP数据结构之单链表

    什么是链表?(依据百度词条查询而得) 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每个元素称为结点)组成,结点能够在执 ...

  7. java调用c++ dll出现中文乱码

    近期的开发用到了使用java调用本机动态连接库的功能,将文件路径通过java调用C++代码对文件进行操作. 在调用中假设路径中包括有中文字符就会出现故障.程序执行就会中止. 以下用一个小样例,来说明记 ...

  8. IOS 京东相关app 出现“网络请求失败,请检查您的网络设置”的解决办法

    问题情况 在IOS系统下,下载安装或者更新新版的京东相关app之后,打开app直接就是“网络请求失败,请检查网络设置”,无论是数据连接还是wifi都试了,都是网络请求失败. 然而打开无线局域网-使用无 ...

  9. git 拉取和获取 pull 和 fetch 区别【转】

    本文转载自:http://blog.csdn.net/u010094934/article/details/52775653 使用git  直接提交的话   直接 push 获取最新版本  有两种   ...

  10. java的征途

    前段时间应因缘梳理了下自己的 Java 知识体系, 成文一篇望能帮到即将走进或正在 Java 世界跋涉的程序员们. 第一张,基础图 大 约在 2003 年我开始知道 Java 的(当时还在用 Delp ...