Tag: x509

从字符串加载.Net中的Jira公共证书(如何在.Net中将ASN.1编码的SubjectPublicKeyInfo转换为X509证书)

我正在构建一个oauth 1.0a服务,它将由Jira中的小工具使用,它是一个用C#编写的.Net 3.5应用程序。 Jira使用RSA-SHA1签名方法向此服务发出请求,这意味着validation我需要创建X509Certificate实例的请求的签名形成其公共证书。 在Jira应用程序中,您可以通过转到消费者信息屏幕(也包含Jira的消费者密钥等)来获取公共证书,并以此格式显示公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCObJRTGSZbAo jRkvKmm0cwFXnKcPMfR4t/sghvLe/+QVs6TJOz5cUh5UokSqyz VeMsL0jomP18ZcR3SPcIFT7xtOGQjLwLk7ghfYSsxjTGs9VxsC /PQk5OQRP3v43IxFNF3M2SYhFWJZTOnqrab5AsMh2Kxdv+D69D CINXCu5ltQIDAQAB 查看生成此密钥的Jira代码,我可以看到它(假设)PEM编码时没有BEGIN / END证书页眉/页脚。 RSAKeys.toPemEncoding(consumer.getPublicKey()) RSAKeys是一个开源类,可在此处找到: https://studio.atlassian.com/source/browse/OAUTH/trunk/api/src/main/java/com/atlassian/oauth/util/RSAKeys.java?r=HEAD 我希望将此公共证书(密钥)加载到.Net中的X509Certificate实例中,但到目前为止我的尝试都失败了。 这是我的代码: static readonly Regex stripRegex = new Regex(“—–[AZ ]*—–“); public string ConvertFromOpenSsl(string key) { return stripRegex.Replace(key, “”).Replace(“\r”, “”).Replace(“\n”, “”); } public X509Certificate2 GetConsumerCertificate(IConsumer consumer) { string cert = @”MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCObJRTGSZbAo jRkvKmm0cwFXnKcPMfR4t/sghvLe/+QVs6TJOz5cUh5UokSqyz VeMsL0jomP18ZcR3SPcIFT7xtOGQjLwLk7ghfYSsxjTGs9VxsC /PQk5OQRP3v43IxFNF3M2SYhFWJZTOnqrab5AsMh2Kxdv+D69D CINXCu5ltQIDAQAB”; string converted = ConvertFromOpenSsl(cert); var […]

C#证书生成框架

有谁知道可以生成公钥/私钥,X.509证书并签署这些证书的C#框架?

如何使用Compact Framework在C#中validationX.509证书

我正在尝试使用C#和.NetCFvalidationX.509证书。 我有CA证书,如果我理解正确,我需要使用此CA证书中的公钥来解密不受信任证书的签名。 这应该给我不受信任证书的计算哈希值。 然后我应该自己计算证书的哈希值并确保两个值匹配。 我已经玩了几天了,我没有走得太远。 我一直在使用X509Certificate和RSACryptoServiceProvider类。 首先,我尝试从X509Certificate类中获取公钥和签名。 我能够获得公钥而不是签名。 接下来,我尝试解析构成证书的二进制数据,这允许我获取签名(以及我想要的任何其他数据),但我无法使用RSACryptoServiceProvider解密签名。 我试过这样的事情,但在我试图解密的时候不断得到说“Bad Key”的exception: RSAParameters rsaParams = new RSAParameters(); rsaParams.Exponent = exp; rsaParams.Modulus = mod; RSACryptoServiceProvider rsaServ = new RSACryptoServiceProvider(); rsaServ.ImportParameters(rsaParams); byte[] decryptedSig = rsaServ.Decrypt(encryptedSig, false); 任何建议将不胜感激。 编辑:我尝试了似乎更好的东西,但返回了一个奇怪的结果。 我在这里使用X509Certificate2类,因为它更容易进行测试,但我需要稍后切换到.NetCF的X509Certificate。 我认为RSACryptoServiceProvider.VerifyData可能就是我所需要的。 我尝试了以下代码。 X509Certificate2 cert = new X509Certificate2(certBytes); X509Certificate2 certCA1 = new X509Certificate2(@”C:\certs\certCA1.cer”); byte[] encryptedSig = new byte[256]; Array.Copy(certBytes, certBytes.Length […]

从RSACryptoServiceProvider创建X509Certificate2失败,无法找到请求的对象

示例代码: CspParameters cspParameters = new CspParameters(); cspParameters.ProviderType = 1; // PROV_RSA_FULL // Create the crypto service provider, generating a new // key. mRsaCSP = new RSACryptoServiceProvider(mDefaultKeyLength, cspParameters); mRsaCSP.PersistKeyInCsp = true; RSAParameters privateKey = mRsaCSP.ExportParameters(true); byte[] rsaBytes = mRsaCSP.ExportCspBlob(true); try { X509Certificate2 cert = new X509Certificate2(rsaBytes); mKeyDataPfx = Convert.ToBase64String(cert.Export(X509ContentType.Pkcs12, password)); } catch (Exception ce) { string […]

使用x509证书签署xml文档

每次我尝试发送签名的XML时,Web服务validation程序都会拒绝它。 为了签署文档,我刚刚调整了Microsoft提供的示例代码: http://msdn.microsoft.com/es-es/library/ms229745(v=vs.110).aspx 我的实施: public static XmlDocument FirmarXML(XmlDocument xmlDoc) { try { X509Certificate2 myCert = null; var store = new X509Store(StoreLocation.CurrentUser); //StoreLocation.LocalMachine fails too store.Open(OpenFlags.ReadOnly); var certificates = store.Certificates; foreach (var certificate in certificates) { if (certificate.Subject.Contains(“xxx”)) { myCert = certificate; break; } } if (myCert != null) { RSA rsaKey = ((RSA)myCert.PrivateKey); // Sign […]

.Net以编程方式与Bouncy Castle签署PKCS#10请求

我们使用CertEnroll在客户端上生成了有效的PKCS#10证书请求。 现在我们需要对其进行签名并将结果返回给客户端,其中CertEnroll将处理本地证书库的内容。 这是一个B2B应用程序,根签名证书将自行生成,或者我们可以使用我们现有的Thawte SSL证书。 Server(2008)没有运行Active Directory,除非绝对必要,否则我们不希望为此创建独立的签名基础结构/服务。 不需要撤销等 – 我们希望以编程方式执行此操作。 我很乐意使用BouncyCastle库但是C#lib缺少任何有意义的文档,而原始的Java文档无疑是相似的,而C#实现的不同之处让我更加困惑。 是否有人知道(或拥有)样本C#(或VB)代码或已知相关链接,使用BouncyCastle或本​​地.Net类? 完成这件事的任何帮助将不胜感激!

使用C#中的RSA私钥文件创建RSACryptoServiceProvider对象

如何使用RSA私钥文件正确创建RSACryptoServiceProvider对象? 我生成了一个RSA私钥,并使用以下方法将其导出到OSX上的p12文件: openssl genrsa -out rsakey.pem 2048 openssl pkcs12 -export -out rsakey.p12 -inkey rsakey.pem -nocerts 在我在Windows笔记本电脑上运行的C#代码中,我在尝试实例化X509Certificate2对象时遇到错误,以便我可以将私钥作为RSACryptoServiceProvider对象从中获取: var privateKey = new X509Certificate2(p12_file, “pass”, X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet).PrivateKey as RSACryptoServiceProvider; CryptographicException:参数不正确。 以下是整个C#代码供参考。 请注意,我只是尝试通过遵循X509Certificate2类的文档来获取私钥作为RSACryptoServiceProvider对象。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Net; using System.Security; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Globalization; using Jose; using […]

OpenSSL .NET c#wrapper X509认证

我喜欢在我的c#项目中使用OpenSSL .NET包装器。 我想生成X509认证,但我真的不知道这个程序。 应该包含什么(什么参数)…等等这是我的代码,我在看了一些测试之后做了: OpenSSL.X509.X509Certificate x509 = new OpenSSL.X509.X509Certificate(); OpenSSL.Crypto.RSA rsa = new OpenSSL.Crypto.RSA(); rsa.GenerateKeys(1024, 0x10001, null, null); OpenSSL.Crypto.CryptoKey key = new OpenSSL.Crypto.CryptoKey(rsa); OpenSSL.Crypto.MessageDigestContext digest = new OpenSSL.Crypto.MessageDigestContext( OpenSSL.Crypto.MessageDigest.SHA1); 我想证书应该使用RSA私钥和摘要作为参数,我必须配置它(日期……和其他参数)。 任何人都可以帮助我吗? 完成我的代码? 谢谢。

C#支持对单个XML元素进行RSA SHA 256签名

我遇到过使用.NET Framework 4.5版的阻止程序来处理带有数字签名的XML。 我的问题是基于使用RSA SHA-256算法使用X.509证书签署单个XML元素的需要。 我已经阅读了很多关于这个主题的.NETpost,看来最初在CLR安全项目RSAPKCS1SHA256SignatureDescription.cs类中开发了一个解决方案。 RSAPKCS1SHA256SignatureDescription当然已经被整合到.net运行时中,从.NET 4.5开始,现在可以在分布式二进制System.Deployment.dll下使用。 我尝试在.NET中使用RSA SHA-256对特定的XML元素进行签名,但是还没有取得任何成功。 我正在尝试使用WSSE令牌签署符合Oasis ebms标准的SOAP消息。 请注意,该课程是为了满足Soap With Attachments(SwA)和签署个人附件而编写的。 我的代码如下 我的代码如下: using System; using System.Collections.Generic; using System.IO; using System.IdentityModel.Tokens; using System.Security; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.ServiceModel.Channels; using System.ServiceModel.Security; using System.Text; using System.Xml; using System.Xml.Linq; using System.Xml.Serialization; using System.Deployment.Internal.CodeSigning; namespace TestCSharpX509CertificateRSSHA256 { public class SignatureSupportUtility { private […]

snk与代码签名证书

在我的组织中,我们使用具有强名称程序集的snk文件。 我们自己生成snk。 此外,我们在二进制文件上使用代码签名签名。 我们从Verisign获得了pfx。 这两个过程有什么区别? 是不是从Verisign也没有收到snk的问题?