相关疑难解决方法(0)

将私钥与.net中的X509Certificate2类相关联

我正在研究一些创建X509certificate和公钥/私钥对的代码.公钥被添加到证书中,并将其发送给签署它的CA.

然后通过System.Security.Cryptography.X509Certificates.X509Certificate2类访问返回的证书.现在,我想使用此证书启动与其他客户端的安全连接.因此我使用SslStream类.要启动SSL握手,我使用以下方法:

server.AssociatedSslStream.AuthenticateAsServer(
                        MyCertificate,                      // Client Certificate
                        true,                               // Require Certificate from connecting Peer
                        SslProtocols.Tls,                   // Use TLS 1.0
                        false                               // check Certificate revocation
                    );
Run Code Online (Sandbox Code Playgroud)

此方法要求私钥与证书关联.当然,CA返回的证书不包含私钥.但它作为.key文件存储在硬盘上.X509Certificate2类有一个名为PrivateKey的属性,我想将私钥与证书关联,但我找不到设置此属性的方法.

有没有办法可以将私钥与.net X509类关联起来?

.net c# ssl x509certificate

23
推荐指数
4
解决办法
4万
查看次数

BouncyCastle RSAPrivateKey到.NET RSAPrivateKey

我正在创建一个证书分发系统来跟踪客户和东西.

会发生什么:

  • 客户端将CSR发送到服务器
  • 服务器检查并签署证书
  • 服务器将签名证书发送给客户端
  • 客户端在Windows存储中放置签名证书和私钥.

所以在客户端会发生这种情况:

//Pseudo Server Object:
Server s = new Server();  

//Requested Certificate Name and things
X509Name name = new X509Name("CN=Client Cert, C=NL");  

//Key generation 2048bits
RsaKeyPairGenerator rkpg = new RsaKeyPairGenerator();
rkpg.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
AsymmetricCipherKeyPair ackp = rkpg.GenerateKeyPair();  

//PKCS #10 Certificate Signing Request
Pkcs10CertificationRequest csr = new Pkcs10CertificationRequest("SHA1WITHRSA", name, ackp.Public, null, ackp.Private);  

//Make it a nice PEM thingie
StringBuilder sb = new StringBuilder();
PemWriter pemwrit = new PemWriter(new StringWriter(b));
pemwrit.WriteObject(csr);
pemwrit.Writer.Flush();
s.SendRequest(sb.ToSting());
Run Code Online (Sandbox Code Playgroud)

好吧我会跳过服务器端只要相信我服务器签署证书并将其发送回客户端.多数民众赞成在那里我会采取行动.

PemReader pr …
Run Code Online (Sandbox Code Playgroud)

.net cryptography rsa bouncycastle csr

18
推荐指数
3
解决办法
2万
查看次数

使用.NET加密库在c#中使用.pem文件中的私钥解密

我知道这是一个类似的问题这一个,但我低着头Bouncey城堡路线之前,没有人知道它可以从一个.质子交换膜的文件,例如加载RSA密钥:

 -----BEGIN RSA PRIVATE KEY-----
 MIIBOgIBAAJBALKzy66nRuof8Fg0ItatyHS9RiDIKH0m5lorKzKn4y5wR6BXpVUv
 ZwnevrAJWBd6EPr/lcV3hjObxD6+q9vmN8ECAwEAAQJAGNcxWwfZrbXe3QPyS9FA
 aindU7U/G5aKssIJcTMxO0UYpGU+WArJbboKeEIE7bpNfhDOKTL7ZL6kWBR1Svlh
 WQIhAOhtx+xXuSrIot59tmXZaypBDjA4n+Xare0ObFLQxWuvAiEAxNMwm6w33bVr
 FHS9slkOh59Le2mgs0uNT6perHaRP48CIGMyRzrlDY/m5SvTtz6slgIIlceawxNU
 Sxp7J1wI4djdAiA6+BchHNjkCP2a9Fr9OydaRMSFpiDqduFQk/enbiKYSwIhANO3
 SQ51oLFtWN9gX3tfKTXflyO6BV8rgPo980d9CEsb
 -----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

直接使用.NET 3.5加密库而无需参加第三方或自行滚动?

c# rsacryptoserviceprovider .net-3.5

8
推荐指数
1
解决办法
1万
查看次数

.net核心RSA pem如何转换为xml?

最近我有项目需要在.net core 1.1上运行它。我意识到RSACryptoServiceProvider不在.net核心RSA类上。

在我在stackoverflow中搜索后,只有很少的结果如下=>

如何在.net Core中使用RSA

如何从.NET读取PEM RSA私钥

C#将私有/公共RSA密钥从RSACryptoServiceProvider导出到PEM字符串

这是上面的帖子提示我下面的链接

https://gist.github.com/brentmaxwell/46081df6fcbc0ca33fe1

我也研究了BouncyCastle PCL 1.8.1.1。我仍然无法解决

任何一种都可以帮助将以下pem格式转换为.net core中的XML格式。

-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIZaRouD0ESme7+v
FefIW5aCyrjJWt1mkA5ITWfHHsFbZ8ErIWFTaysr95aLWIdHkEoBUi0lNKwnlQdP
V0/X5XNTJK03o/u+52424ppinZbog2nDSWYeuAwTe2zipdGB9COwJ/7TIgJyTLhX
fxAax7l6FxKmP6oXK7SJk5Ln5ZAlAgMBAAECgYBSatC5xxuc8XAab4KFlFAy7XsE
jmjSRpd6W3o4flrsjHECe73XYX/tlOQmEsc0/X6TF2pczWUZcpKmUFKkZTGYgM4q
ku0qimu9rsbMNFrro0R0weV2sq2sShRzN9qTXbDv/6ze6jn1gzDCSEAsb0LLtTQM
J2jH9zPm7tRzK8qAoQJBALr+EkQxZxDMe/TD7l15lFWH+DZPMGC9X7ZSafICzdgJ
u+XPAQiDOVFmtd/hEIF9ee7ifhc1Zf4NZy4QQGdrQT0CQQC37xvGZdrsteWaNrKF
QFVkG+zJ4gProhR1QDUB1LGOny+avL5mi+nbghJ7XwfI7NqFPYzTUjmNp3lVm5IG
O6kJAkAk9fdyVzmCDokp1liVTWTOizO6uGhdltEGXr/mQDujyjjDsekIX7fCqUSl
3fy/O6gQWeCGgd2JG+kbJ8czKfYZAkB0UuTm8S2mPFdL00HNoeUfHcX/20+NawCz
MnsTgFcWkrgBjVKA+gVZDIbxvSToPlronwd78elyG7NRn8SW6o45AkEAtB0nGH5Y
KXIS07CoQMRBHoXx4f+ojofNoJvzI5Ax+ZBbSx/z5hTSm/jN7llVFRE+3rRyNLig
X/r2O4vVkprHTg==
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

来自https://superdry.apphb.com/tools/online-rsa-key-converter的结果 是有效的。但是bouncyCastle .net核心示例代码并不多

encryption rsa pem .net-core

7
推荐指数
1
解决办法
6061
查看次数

如何使用私钥使用 rsa-sha256 对字符串进行签名?

我必须privateKey在每次API调用时使用 OpenSSL 生成的字符串签名,该字符串privateKey是从数据库接收的,并为每个用户进行更改。

我读过我应该使用RSACryptoService并添加privateKey作为参数来实现这一点。但是我收到错误“无效数据”ImportParameters

这是代码:

string privateKey = "-----BEGIN RSA PRIVATE KEY-----
    MIIJ....."

RSAParameters rsap = new RSAParameters
{
    Modulus = Encoding.ASCII.GetBytes(privateKey)
};
rsa.ImportParameters(rsap);
byte[] encryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes(StringToSign), false);
string base64Encrypted = Convert.ToBase64String(encryptedData);
Run Code Online (Sandbox Code Playgroud)

在服务的文档中声明需要使用 RSA-SHA256 对字符串进行签名。这是在 Node.JS 中对该字符串进行签名的代码:

const signature = crypto.createSign('RSA-SHA256').update(string).sign(privateKey, 'base64')
Run Code Online (Sandbox Code Playgroud)

但是,我在 c# 中找不到任何类似的东西。

c# rsa

6
推荐指数
1
解决办法
1697
查看次数

使用CngKey在PEM(DKIM兼容)中使用C#生成RSA密钥对....类似于"openssl rsa"

是否可以生成RSA密钥对,将其导出为与DKIM的类似PEM格式兼容的ASN1 格式,仅使用C#?

我想减少对第三方的依赖,但这里有一些我发现的

充气城堡

密码学应用程序块

Win32 PFXImportCertStore

导入PEM

微软的CLR安全增强功能

微软CNG

以下是在Codeplex上使用.NET dll的Microsoft CNG提供程序的代码(上图)...但是我不知道如何以DKIM兼容的ASN1格式导出和导入公钥和私钥.

     byte[] pkcs8PrivateKey = null;
        byte[] signedData = null;

        CngKey key = CngKey.Create(CngAlgorithm2.Rsa);
       byte[] exportedPrivateBytes = key.Export(CngKeyBlobFormat.GenericPrivateBlob);

       string exportedPrivateString= Encoding.UTF8.GetString(exportedPrivateBytes);

        pkcs8PrivateKey = Encoding.UTF8.GetBytes(exportedPrivateString);

        using (CngKey signingKey = CngKey.Import(pkcs8PrivateKey, CngKeyBlobFormat.Pkcs8PrivateBlob))
        {
            using (RSACng rsa = new RSACng(signingKey))
            {
                rsa.SignatureHashAlgorithm = CngAlgorithm.Sha1;
                signedData = rsa.SignData(dataToSign);
            }
        }
Run Code Online (Sandbox Code Playgroud)

是否有任何使用Microsoft库(Codeplex上的Win32,PFX或CLR)的直接示例,说明如何创建密钥对并以PEM格式导出/导入这些值?

c# rsa certificate pem

5
推荐指数
1
解决办法
4400
查看次数

无法导入 RSA 私钥:“提供程序的版本错误”

我有一个随机私钥 ( "C:\tmp\private.key"):

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDHikastc8+I81zCg/qWW8dMr8mqvXQ3qbPAmu0RjxoZVI47tvs
kYlFAXOf0sPrhO2nUuooJngnHV0639iTTEYG1vckNaW2R6U5QTdQ5Rq5u+uV3pMk
7w7Vs4n3urQ6jnqt2rTXbC1DNa/PFeAZatbf7ffBBy0IGO0zc128IshYcwIDAQAB
AoGBALTNl2JxTvq4SDW/3VH0fZkQXWH1MM10oeMbB2qO5beWb11FGaOO77nGKfWc
bYgfp5Ogrql4yhBvLAXnxH8bcqqwORtFhlyV68U1y4R+8WxDNh0aevxH8hRS/1X5
031DJm1JlU0E+vStiktN0tC3ebH5hE+1OxbIHSZ+WOWLYX7JAkEA5uigRgKp8ScG
auUijvdOLZIhHWq7y5Wz+nOHUuDw8P7wOTKU34QJAoWEe771p9Pf/GTA/kr0BQnP
QvWUDxGzJwJBAN05C6krwPeryFKrKtjOGJIniIoY72wRnoNcdEEs3HDRhf48YWFo
riRbZylzzzNFy/gmzT6XJQTfktGqq+FZD9UCQGIJaGrxHJgfmpDuAhMzGsUsYtTr
iRox0D1Iqa7dhE693t5aBG010OF6MLqdZA1CXrn5SRtuVVaCSLZEL/2J5UcCQQDA
d3MXucNnN4NPuS/L9HMYJWD7lPoosaORcgyK77bSSNgk+u9WSjbH1uYIAIPSffUZ
bti+jc1dUg5wb+aeZlgJAkEAurrpmpqj5vg087ZngKfFGR5rozDiTsK5DceTV97K
a3Y+Nzl+XWTxDBWk4YPh2ZlKv402hZEfWBYxUDn5ZkH/bw==
-----END RSA PRIVATE KEY-----  
Run Code Online (Sandbox Code Playgroud)

我尝试使用RSACryptoServiceProvider.ImportCspBlob导入它,但失败并显示错误:

System.Security.Cryptography.CryptographicException:提供程序的错误版本。

完整的堆栈跟踪:

Failed: System.Security.Cryptography.CryptographicException: Bad Version of provider.

   at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
   at System.Security.Cryptography.Utils._ImportCspBlob(Byte[] keyBlob, SafeProvHandle hProv, CspProviderFlags flags, SafeKeyHandle& hKey)
   at System.Security.Cryptography.Utils.ImportCspBlobHelper(CspAlgorithmType keyType, Byte[] keyBlob, Boolean publicOnly, CspParameters& parameters, Boolean randomKeyContainer, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
   at System.Security.Cryptography.RSACryptoServiceProvider.ImportCspBlob(Byte[] keyBlob)
   at ConsoleApplication3.Program.DecodeRSA(Byte[] data, Int32 c_data) in C:\Users\myuser\Documents\Visual Studio 2015\Projects\myproj\ConsoleApplication3\Program.cs:line 28
   at ConsoleApplication3.Program.Main(String[] args) in …
Run Code Online (Sandbox Code Playgroud)

c# rsa

5
推荐指数
2
解决办法
2556
查看次数

将私钥添加到X509Certificate

我正在研究一些当前使用OpenSSL.net为证书签名请求创建公钥/私钥对的代码.该请求配有公钥并发送给CA,CA返回签名证书.然后将以前创建的私钥添加到证书中:

myCert.PrivateKey = CryptoKey.FromPrivateKey(rsa.PrivateKeyAsPEM, null);
Run Code Online (Sandbox Code Playgroud)

问题是我需要一个.net X509Certificate,因为该软件的其余部分使用SslStream和其他.net类进行TLS.

我能够从CA的响应中创建证书,但我找不到向其添加私钥的方法.我还尝试从CA的响应创建一个OpenSSL证书,将其导出为DER或PEM并从中创建.net证书,但它始终忽略私钥.

关于如何解决这个问题的任何想法?

.net c# ssl x509certificate

4
推荐指数
2
解决办法
1万
查看次数

在.NET中使用PEM编码的RSA私钥

我有一个私钥,看起来像这样:

----- BEGIN RSA 私钥 ----- 一些私钥数据 ----- END RSA PRIVA

我需要在我的C#项目中使用此密钥,但我找不到任何示例如何使用此格式的密钥.谢谢

.net c# cryptography rsa private-key

3
推荐指数
1
解决办法
1万
查看次数

将 RSA PEM 转换为 XML .net 框架

有没有办法将 RSA PEM 公钥转换为 XML,而不使用第三方库(例如BouncyCastle)。到目前为止我System.Security.Cryptography只知道识别xml sring。RSA.FromXmlString(PublicKey)

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArqNpTjJR6+aP7dYNTqIU
OPcpTirmN5JbS+ZL255MByiHWn7AF9DU5Q99TROtGbtqySuyzv3fu28YRRSIwK/J
kMLb50AEe3XvnUoZhN86QLCie3iFIq8kpELmX5v2GxCt15ks+cwGsYGYGGwTZNo2
2Y4W1cRgVBLhhbEbuvybKddi7UsmhJlbvLqinUUGCJFkgCAyIbYYowlUjZhbVjp9
DGiaF7EwpcbcERckYXwnKheejWG0chHL9Nt9YldW33Vjgb6s3A9GNF80XNuqT6GJ
T3h3Ig/aoK/9AIhVvc53atCJEgRnjKgfkYPr3SQoKLH7HDCq2TOwN9N5Mbp0QNvb
kwIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

提前致谢

更新

在这里找到了答案。

Stormwild/opensslkey.cs

.net encryption rsa

3
推荐指数
1
解决办法
7072
查看次数