Tag: x509certificate

.NET Standard – 以编程方式将证书和私钥合并到.pfx文件中

有没有办法将证书和密钥(两者都作为Base64字符串从服务中单独接收)组合成一个.pfx文件,使用C#/。NET标准编程 ? 使用工具不是一种选择,因为我需要自动化它。 上下文:我需要将证书和私钥(不带页眉和页脚的单独Base64字符串)加载到X509Certificate2对象,以将其从.NET Standard 1.6库传递到应用程序。 问题是,.NET Standard中的X509Certificate2类中没有PrivateKey属性! 因此,我在X509Certificate2对象中实际加载私钥的唯一方法是将它与证书本身在.pfx文件中组合,并在构造函数中加载它。

如何从客户端请求获取X509Certificate

我有一个使用证书保护的网络服务。 现在,我想通过查看证书指纹来识别客户端。 这意味着我的服务上有一些指纹列表,这些指纹链接到某个用户。 实际上,我的第一个问题(有点偏离主题)是:这是一个好方法还是我还应该引入一些用户名密码构造? 第二个问题是:我如何获得客户端用于连接到Web服务的证书,以便我可以在服务端读取指纹。 我确实读了很多关于它的内容(比如这篇文章: 如何从Web服务中的客户端发送X509Certificate? )但找不到答案。 我没有HTTPContext,所以这不是一个选项。 在上面提到的post中提到了Context.Request.ClientCertificate.Certificate但我想它们也意味着HTTPContext 。 另外,将到web.config也不是一个选项。

Azure托管服务总线:“X.509证书CN = servicebus.windows.net不在受信任的人员商店中。”

在我的vs2013开发VM上使用Azure SDK 2.3我可以轻松地使用Azure中托管的 Service Bus队列。 但是,在Windows Server 2008 R2 Standard SP1上,看起来Windows无法信任所涉及的证书并引发exception。 抛出的线: // Send the message await queueclient.SendAsync(message); exception消息: X.509证书CN = servicebus.windows.net不在受信任的人员商店中。 X.509证书CN = servicebus.windows.net链建设失败。 使用的证书具有无法validation的信任链。 替换证书或更改certificateValidationMode。 无法将证书链构建到受信任的根颁发机构。 CAPI2日志(附在下面)指向信任问题,因此我比较了两台计算机上安装的证书。 服务器上不存在以下证书: 中级证书颁发机构> Microsoft Internet Authority (由Baltimore Cyber​​Trust Root发布) 中级证书颁发机构> MSIT Machine Auth CA 2 (由Microsoft Internet Authority颁发) 问题: 证书来自哪里? 为什么他们从服务器中丢失? 如何解决这个问题? 可能的路径(更新): 在服务器上安装Azure SDK 2.3 for […]

证书安装安全警告解决方法?

我有一些C#4.0代码尝试将CA(.der编码)证书安装到当前(我的)用户的“受信任的根证书颁发机构”存储中。 我的小控制台应用程序默默地对其他商店运行,但是对于这个商店,会出现一个GUI弹出窗口“您即将从证书颁发机构安装证书… Windows无法validation证书是否实际来自…..你是否想要安装这个证书吗?“ 此消息框是一个问题,因为我们的想法是使用MSI自动部署应用程序,并在正确的位置静默获取正确的证书。 拥有模态框将导致自动部署失败。 如何在没有部署中断消息框的情况下完成此安装?

使用HttpClient,HTTPS请求失败

我使用以下代码并获取HttpRequestExceptionexception: using (var handler = new HttpClientHandler()) { handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.SslProtocols = SslProtocols.Tls12; handler.ClientCertificates.Add(new X509Certificate2(@”C:\certificates\cert.pfx”)); // I also tried to add another certificates that was provided to https access // by administrators of the site, but it still doesn’t work. //handler.ClientCertificates.Add(new X509Certificate2(@”C:\certificates\cert.crt”)); //handler.ClientCertificates.Add(new X509Certificate2(@”C:\certificates\cert_ca.crt”)); using (var client = new HttpClient(handler)) { var response = […]

Azure API服务器无法validation请求

我有一个任务(我尝试使用worker角色并上传控制台应用程序并运行.exe),该任务应该每天运行一次,并收集我的一些虚拟机的Azure Metrics。 这在本地完美无缺,但在云服务上我得到此错误: 未处理的exception:Microsoft.WindowsAzure.CloudException:ForbiddenError:服务器无法validation请求。 validation证书是否有效并与此订阅相关联。 在Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSucces …等 发生这种情况的路线是: MetricDefinitionListResponse metricListResponse = metricsClient.MetricDefinitions.List(resourceId, null, nspace); 这是我的代码的一部分: string subscriptionId = “fc4xxxx5-835c-xxxx-xxx-xxxxxxx”; // The thumbprint of the certificate. string thumbprint = “‎f5 b4 xxxxxxxx f7 c2”; // Get the certificate from the local store. //X509Certificate2 cert = GetCertificate(StoreName.My, StoreLocation.LocalMachine, thumbprint); //cert = GetCertificate(StoreName.My, StoreLocation.CurrentUser, thumbprint) ?? new X509Certificate2((“manageAzure.cer”)); […]

Web作业上的Windows Azure管理库认证错误

我构建了一个Azure Web作业控制台,它引用了Windows Azure管理库。 我尝试使用公共设置方法validation我的应用。 该程序在我的本地工作正常,但在使用X509Certificates错误的Azure Web作业上失败。 这就是我为网络工作计划所做的工作。 从https://windows.azure.com/download/publishprofile.aspx下载发布设置文件 在控制台应用程序上,通过从设置文件中复制并粘贴subscriptionId和cert字符串来创建凭证。 new CertificateCloudCredentials( subscriptionId, new 509Certificate2(Convert.FromBase64String(base64EncodedCertificate))); 在Azure Web Job上部署并尝试“按需运行”。 错误 at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr) at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx) at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData) 执行时出现exception: System.Security.Cryptography.CryptographicException, The system cannot find the file specified.

根据自签名证书颁发机构validation服务器证书

我有自定义服务器/客户端应用程序,使用SSL加密的TCP连接(自定义协议)相互通信。 为了设置服务器证书,我创建了一个自签名证书颁发机构,并使用它来签署证书供服务器使用。 在客户端,我想validation我连接的服务器的证书是由我的自签名CA签署的。 通过使用load_verify_file()函数为ssl :: context提供自签名CA证书,我能够在C ++中使用boost。 我想在C#客户端中实现相同的function,但.NET SSL的东西似乎要更加严格地信任不在Windows信任库中的证书。 到目前为止,我找到了几个部分解决方案。 显然, X509Chain是用于validationSSL证书的类 。 我尝试过这样的代码,但手动创建的链仍然抱怨根证书是不可信的,就像传递给validation函数的原始链一样。 有一个选项可以忽略未知的证书颁发机构 ,但这似乎意味着它将接受任何自签名证书,这绝对不是我想要的。 这是似乎最接近我想要的代码,但如上所述,我有一个问题,它仍然抱怨我添加到ExtraStore的证书是自签名的。 有没有办法说服X509Chain信任我给它的证书? bool remoteCertificateValidationCallback( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { // make sure certificate was signed by our CA cert X509Chain verify = new X509Chain(); verify.ChainPolicy.ExtraStore.Add(secureClient.CertificateAuthority); // add CA cert for verification //verify.ChainPolicy.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority; // […]

缺少“管理私人钥匙”选项

我正在使用Windows 2008R2下IIS 7.5上托管的Transport Security开发WCF服务。 我有一个在IIS 7.5中生成的证书,该证书存储在Local文件夹中。 当我使用BasicHttpBinding或WSHttpBinding与Transport Security时 – 一切正常。 但当我将其更改为NetTcp时,我得到一个例外: CryptographicException ‘Keyset does not exist’. 经过一段谷歌搜索后,我发现问题可能是因为我的NETSERVICE IIS帐户没有预先设置我的证书的私钥。 解决方案是通过右键单击我的证书并选择“MANAGE PRIVATE KEYS”选项来设置MMC中的访问权限。 但是在选择菜单中没有这样的选项! 证书是在管理员帐户下创建的,我打开它 – 它说,它有私钥。 我做错了什么?

System.Net.CertificatePolicy到ServerCertificateValidationCallback接受所有证书策略

我已经下载了一些有点过时的示例代码。 它有以下几类: public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy { public TrustAllCertificatePolicy() { } public bool CheckValidationResult(ServicePoint sp, System.Security.Cryptography.X509Certificates.X509Certificate cert, WebRequest req, int problem) { return true; } } 稍后在代码中调用以下内容: System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); 它给出了以下警告: 警告1’System.Net.ServicePointManager.CertificatePolicy’已废弃:’CertificatePolicy已针对此类型废弃,请改用ServerCertificateValidationCallback。 http://go.microsoft.com/fwlink/?linkid=14202 ‘ 实现等效function的当前程序是什么? 我在MSDN上看过一篇文章 ,但我不确定如何转换? 这是一个类库。 我道歉,如果我似乎没有对此进行过充分的研究,但是当涉及到ssl证书时,它有点超出了我的境界。 任何帮助是极大的赞赏!