.Net Core 中X509Certificate2 私钥保存为 pem 的方法
在自己签发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 的方法的更多相关文章
- .NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常)
.NET客户端下载SQL Server数据库中文件流保存的大电子文件方法(不会报内存溢出异常) 前段时间项目使用一次性读去SQL Server中保存的电子文件的文件流然后返回给客户端保存下载电子文件, ...
- JavaScript在浏览器中把文本保存为文件的方法
JavaScript在浏览器中把文本保存为文件的方法 经过测试第二种方法可以保存更多的文本不至于卡死 var saveTextAsFile1 = function (text, fileName, s ...
- OPENSSL中RSA私钥文件(PEM格式)解析【一】
http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...
- asp.net core中遇到需要自定义数据包解密方法的时候
最近将公司的项目用.netcore重写, 服务的http外部接口部分收发消息是DES加解密的, 那么在asp.net core mvc的action处理之前需要加入解密这个步骤. 我第一想到的是用fi ...
- [小技巧]EF Core中如何获取上下文中操作过的实体
原文地址:https://www.cnblogs.com/lwqlun/p/10576443.html 作者:Lamond Lu 源代码:https://github.com/lamondlu/EFC ...
- Net Core中数据库事务隔离详解——以Dapper和Mysql为例
Net Core中数据库事务隔离详解--以Dapper和Mysql为例 事务隔离级别 准备工作 Read uncommitted 读未提交 Read committed 读取提交内容 Repeatab ...
- ASP.NET CORE中使用Cookie身份认证
大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cook ...
- .NET Core中的数据保护组件
原文地址: PREVENTING INSECURE OBJECT REFERENCES IN ASP.NET CORE 2.0 作者: Tahir Naushad 背景介绍 在 OWASP(开放式 W ...
- .NET Core中复制源文件夹下的所有内容到新文件夹
.NET Core中没有原生的复制文件夹方法,我们可以自己写个: 新建一个.NET Core控制台项目,示例代码如下: using System; using System.IO; namespace ...
随机推荐
- ubuntu设置不睡眠的方法
Ubuntu系统不睡眠设置方法:要完成这个设置Ubuntu有两种方法:第一种是打开 System Settings –> Power,中文版是打开系统设置 -> 电源),然后进行设置.但不 ...
- POJ 3311
设dp状态为dp[i][j]为当前访问过的结点状态为i且当前停留点为j时的最短路径.用二进制存存储访问过的状态,访问过为1,否则为0. #include <iostream> #inclu ...
- 使用memcachedclientXmemcached与Spring整合
1 简单介绍 Xmemcached是一个高性能的基于java nio的memcachedclient.在经过三个RC版本号后.正式公布1.10-final版本号. xmemcached特性一览: 1. ...
- 使用Carthage安装及使用第三方库
CocoaPods 安装不了,只好使用Carthage 参考:http://www.jianshu.com/p/52dff4cef8a2 http://www.jianshu.com/p/bf263c ...
- tensorflow 模型压缩
模型压缩 为了将tensorflow深度学习模型部署到移动/嵌入式设备上,我们应该致力于减少模型的内存占用,缩短推断时间,减少耗电.有几种方法可以实现这些要求,如量化.权重剪枝或将大模型提炼成小模型. ...
- golang LMDB入门例子——尼玛,LMDB的文档真的是太少了
使用的是这个库:https://github.com/szferi/gomdb 安装: go get github.com/szferi/gomdb 代码: package main import ( ...
- Codeforces--630C--Lucky Numbers(快速幂)
C - Lucky Numbers Crawling in process... Crawling failed Time Limit:500MS Memory Limit:65536K ...
- nyoj--990--蚂蚁感冒(模拟)(思维题)
蚂蚁感冒 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/ ...
- Python的学习(二十一)----Python的静态变量
前段时间在论坛里面有人提问说, class foo(): member1 member2 ... self.member1 foo.member2 其中的两个成员member1, member2有什么 ...
- python的enumerate()函数
其中的一篇是这样的:一般情况下,如果要对一个列表或者数组既要遍历索引又要遍历元素时,可以用enumerate 比如: for index,value in enumerate(list): ...