Tag: ssl

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

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

我的C#程序使用什么版本的TLS?

我在Visual Studio 2013中开发了一个C#程序,它与SOAP Web服务进行通信。 如何判断我的程序使用哪个版本的TLS?

通过HTTPS使用Web服务时抛出System.Net.WebException

当使用HTTPS调用在服务器上运行的Web服务时,我的应用程序抛出System.Net.WebException,并显示消息“底层连接已关闭:无法与远程服务器建立信任关系”。 我不知道如何解决这个问题并成功拨打电话。

根据自签名证书颁发机构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; // […]

.NET 4.5中sslStream的密码选择

我正在尝试使用.Net的sslStream类创建TLS1.1 / TLS1.2服务器。 默认情况下,此流接受的唯一密码套件似乎是: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 我想启用这些的非ECDHE版本(即TLS_RSA_WITH_AES_128_CBC_SHA256)。 我搜索了一下,人们谈论通过修改默认的SChannel设置来更改密码套件 – 通过“SSL密码套件订单”或使用CNGfunction: http : //msdn.microsoft.com/en-us/library/窗户/桌面/ bb870930(v = vs.85)的.aspx 但是,我试过这个,我无法得到任何工作。 使用上面链接的C ++代码列出带有BCryptEnumContextFunctions()的启用密码套件,表明默认情况下启用了我想要的密码套件。 我甚至添加了TLS_RSA_WITH_AES_128_CBC_SHA256作为最高优先级套件,并且sslStream仍然拒绝来自仅支持该密码的客户端的TLS连接(例外:“客户端和服务器无法通信,因为它们没有通用算法”)任何想法是什么在这里? (顺便说一句,如果我的客户支持其中一个ECDHE密码套件,一切都很好) 其他人如何在.Net 4.5中实现TLS? 我应该关注开源解决方案吗? SChannel的包装器如何更直接地使用CNG api?

客户端身份validation方案“匿名”禁止HTTP请求。 远程服务器返回错误:(403)禁止

我正在尝试创建一个安全的Web服务。 这是合同和服务实施 [ServiceContract()] public interface ICalculatorService { [OperationContract()] int Add(int x, int y); } [ServiceBehavior(IncludeExceptionDetailInFaults=true)] public class CalculatorService : ICalculatorService { public int Add(int x, int y) { return x + y; } } 这里我有服务代码 var b = new WSHttpBinding(SecurityMode.Transport); b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; b.Security.Message.ClientCredentialType = MessageCredentialType.None; Type contractType = typeof(ICalculatorService); Type implementedContract = typeof(CalculatorService); Uri […]

Mono HttpListener客户端证书

我使用HttpListener创建了一个服务器。 它在没有SSL的情况下工作得很好,但是使用SSL时会发生奇怪 我已经使用httpcfg安装了证书,甚至使用我自己的程序,它安装正确,监听器启动并提供HTTPS请求,但始终要求提供客户端证书。 它不会发生在Windows / .net上,只有Linux / mono(我使用的是ver 3.4.0)并且非常烦人,我不希望每次尝试登录客户端时都会询问用户证书。 这是单声道错误还是有任何方法可以禁用客户端证书协商? 谢谢。

.NET 4.5和.NET 4.5.1默认启用TLS 1.1和TLS 1.2

在我们的Windows 2012 Server R2上,我们需要禁用TLS 1.0。 但是我们运行.NET 4.5 Wcf服务。 我们发现,如果我们禁用TLS 1.0,WCF服务不再运行,因为我们收到错误’现有连接被远程主机强行关闭’。 .NET 4.5和.NET 4.5.1中是否默认启用了TLS 1.1 / 1.2? 如果没有,我们假设是这样,在我们的WCF项目中,我们强制项目使用TLS 1.1 / 1.2?

C#SMTP无法在Outlook.com,端口587上进行身份validation。“服务器响应为:5.7.1客户端未通过身份validation”

我正在尝试发送自动电子邮件(真正需要的商业原因 – 不是垃圾邮件!)。 类似于下面的代码用于与另一个邮件服务提供商合作,但客户已转移到“outlook.com”,他们现在得到: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.1 Client was not authenticated 当然这个(C#)代码应该工作: private void Send_Click(object sender, EventArgs e) { MailMessage message = null; try { message = new MailMessage(From, To); message.Subject = “Update Request Session from ” + From; message.CC.Add(Cc); […]

Web客户端例外:基础连接已关闭:无法为SSL / TLS安全通道建立信任关系

我有一个简单的应用程序,它使用C#Web Client类下载网站HTML。 这是我正在使用的代码的精简样本: WebClient wc = new WebClient(); wc.Headers.Add(“user-agent”, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)”); htmlCode = wc.DownloadString(“https://www.oig.hhs.gov/exclusions/exclusions_list.asp”); 网站证书似乎有问题,因为我遇到了这个例外: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.” “The remote certificate is invalid according to the validation procedure. 如果您将链接复制并粘贴到浏览器中,则需要您在允许您查看网站之前同意风险。 它是一个政府网站,所以我不担心任何病毒或任何东西。 有没有告诉网络客户端绕过这个问题,并继续访问该网站?