Tag: x509certificate

X509Certificate – 密钥集不存在

我有一个使用WCF的WinForms应用程序,并作为参数传递给函数证书: mySvcClient.SendDocument(cert.Export(X509ContentType.SerializedCert, “password”)); … 在WCF服务中 ,我从字节数组重新创建了证书: public void SendDocument (byte[] binaryCert) { X509Certificate2 cert = new X509Certificate2(binaryCert, “password”); … 但是当使用证书签署xml时,我收到错误“Keyset不存在”: if (cert.HasPrivateKey) // WORKS!!! { signedXml.SigningKey = cert.PrivateKey; // THROW “keyset does not exist” EXCEPTION … 在我的电脑中,该应用程序100%工作! 但是在WebServer中,我收到了这个错误! 问题是:即使X509Certificate2从一个字节数组重新创建,我需要一些特殊权限才能访问私钥? 谢谢!

将私钥与.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 ); 此方法要求私钥与证书关联。 当然,CA返回的证书不包含私钥。 但它作为.key文件存储在硬盘上。 X509Certificate2类有一个名为PrivateKey的属性,我想将私钥与证书关联,但我找不到设置此属性的方法。 有没有办法可以将私钥与.net X509类关联起来?

使用从WCF服务到Java Webservice的X.509证书对SOAP消息进行签名

这是我在网上的第一个问题。 希望它有意义。 我在网上看到了几个与此问题相关的博客,我尝试了一些没有成功的想法。 这是我的情况: 我有一个Web应用程序调用WCF Web服务,然后调用Java Web服务。 它们都在不同的服务器上。 WCF Web服务与java Web服务之间的调用未通过https,因为证书足以识别调用者(因此消息安全性)。 Java Web服务(黑盒子) Java Web服务需要收到已签名的消息,并按以下方式工作: 在处理每个请求之前,处理程序拦截所有传入的消息并执行以下validation规则: 1.邮件是否包含安全标头 2.邮件是否包含正确的安全标头ID 3.邮件是否已正确签名 4.邮件是否包含KeyInfo x.509证书 5.证书是否来自可信CA-配置 6.证书是否有效(未过期,已撤销) 7.证书是否包含正确的策略OID 确认所有这些步骤后,可以处理该消息,如果任何步骤失败,则将返回soap消息exception。 SOAP安全标头应根据xxx … w3.org/TR/SOAP-dsig/数字签名规范进行validation。 最完整的描述可以在这里找到xxx … ibm.com/developerworks/webservices/library/ws-security.html这篇IBM文章列出了每个WS-Security标头的详细信息,另外还提供了一个示例签名的SOAP消息。 签署SOAP消息时,还必须将x.509证书添加到消息KeyInfo中,这是证书validation所必需的。 SOAP请求应该是这样的: soe1PnaGXVGrsauC61JSHD+uqGw= Y9SRPQ9TcDu+GazO3LFwodEdhaA= jBX/8XkY2aCte7qgXEp1sbNWmQcK/90iVL58sAvwYAEcBABGzOk2agxR0HvWrNa6ixkocAQ205lggwOxnxZJvoVozVYAAjcLtayPBOUYrnSEBFrwKWP/vxgvUDRIdXeIuw5GLY87NrTQMm1Ehf/HvMX9hTBJn4Nm8RdDiUmPcIo= MIIEbZCCA1WgAwIBAgIES1XpMjANBgkqhkiG9w0BAQUFADBYMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFzAVBgoJkiaJk/IsZAEZFgdlbnRydXN0MRIwEAYDVQQDEwllbnRydXN0U00xEjAQBgNVBAMTCWVudHJ1c3RDQTAeFw0xMDA0MjIxMDQ4MDBaFw0xMzA0MjIxMTE4MDBaMGoxFTATBgoJkiaJk/IsZAEZFgVsb2NhbDEXMBUGCgmSJomT8ixkARkWB2VudHJ1c3QxEjAQBgNVBAMTCWVudHJ1c3RTTTESMBAGA1UEAxMJZW50cnVzdENBMRAwDgYDVQQDEwdSYnMgUmJzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMf88L2JjLPG1hNmTA/KBiC53WVwS2WU9Jh3lC1Rob6RMzOojomZ/dNrvSRB6nzWeXJpZXwik4XFrsAq24By2SZpLTO4p8Vcq71mTAfDu33cnO49Au2pwNvcMn5qIKBk1Xx+oVb4fzK9ncTRu7bW46HsIYth+qkGhbI2JEHwr/zwIDAQABo4IBrzCCAaswCwYDVR0PBAQDAgeAMCsGA1UdEAQkMCKADzIwMTAwNDIyMTA0ODAwWoEPMjAxMjA1MjgxNTE4MDBaMCMGA1UdIAQcMBowCwYJYIZIAYb6awoEMAsGCSqGSIb2fQdLAzAbBgNVHQkEFDASMBAGCSqGSIb2fQdEHTEDAgEBMIHGBgNVHR8Egb4wgbswb6BtoGukaTBnMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFzAVBgoJkiaJk/IsZAEZFgdlbnRydXN0MRIwEAYDVQQDEwllbnRydXN0U00xEjAQBgNVBAMTCWVudHJ1c3RDQTENMAsGA1UEAxMEQ1JMMTBIoEagRIZCZmlsZTovLy8vTVNJREhVLTQ0NUE0RkVFL0NSTC9lbnRydXN0Y2FfZW50cnVzdHNtX2xvY2FsX2NybGZpbGUuY3JsMB8GA1UdIwQYMBaAFBvSL6cPz8L5shubV58yf0pczKzuMB0GA1UdDgQWBBT1/j6OSS8FTjwqluvew16sv7h+VzAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY4LjADAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQBXxRIA4HUvGSw4L+4uaR51pY4ISjUQWo2Fh7FYBMt29NsKCTdur1OWVVdndt1yjXP4yWXxoAhHtvZL+XNALUFlR2HAWiXuL1nRcxHkB98N5gPqQzW/lJk9cLtL4hVp28EiEpgmKT3I3NP2Pdb2G5MMOdvQ/GFb2y6OwblR8ViPQ8B2aHWzXMrH+0qadPAuBhXyAohwb+mMuYT/ms6xpGi1NMYuYMf6XONz9GkZgnGnMwa+9CCQws1HNz8WYHtmFIxLsVuEWc/0a1vg4IYX1Ds/ttyhJGTVXOSJSkBz8kRyj1pNBDdc1KeG8M++O8m8VgRTJvYaPc7NMiclISukGpea 0061020051 WCF Web服务 我有一个服务器证书(来自可靠CA的p7b格式),我安装在我的WCF Web服务工作站(dev)使用mmc Certificate Snap-in(目前cert在受信任的发布者中)。 我不认为我需要在Java服务器上使用另一个证书,因为响应应该是明确的(既没有签名也没有加密)。 我对这个证书仍然有点困惑 – 一般都是证书 – 因为它似乎只持有一个公钥。 这是我的测试项目的app.config: <!– –> 当我运行一个简单的测试时: WebAS […]

访问azure色网站上传的证书

当我使用网络角色时,我只是在azure色门户网站上传证书,我能够看到它。现在我已经切换到azure的网站,我将证书上传到azure管理门户网站,但我的代码没有看到它一点都不 是否有一些配置我们需要或以其他方式访问azure网站上传的证书。 这就是我尝试访问上传的证书的方式。 private List GetAvailableCertificatesFromStore() { var list = new List(); var store = new X509Store(StoreName.My,StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); try { foreach (var cert in store.Certificates) { // todo: add friendly name list.Add(string.Format(“{0}”, cert.Subject)); } } finally { store.Close(); } return list; }