Tag: ssl

.Net SqlConnection,服务器身份validation和证书固定

使用s SqlConnection时如何固定证书? 从SqlConnection连接字符串参数关键字和值 ,我知道我可以将Encrypted设置为true以强制(鼓励?)使用SSL / TLS。 但是,为了固定证书,我认为我们需要使用ServicePointManager ServerCertificateValidationCallback (下面的示例代码由ArneVajhøj提供,用于HTTP / HTTPS)。 我不清楚如何将PinCertificate (从ServicePointManager )连接到SqlConnection 。 更新:在microsoft.public.dotnet.languages.csharp上与ArneVajhøj交谈,似乎无法对连接进行所需的控制。 Vajhøj提供了一个指向加密SQL Server连接的链接。 public static void Main(string[] args) { ServicePointManager.ServerCertificateValidationCallback = PinCertificate; WebRequest wr = WebRequest.Create(“https://www.google.com/”); wr.GetResponse(); } public static bool PinCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { byte[] chash = certificate.GetCertHash(); StringBuilder sb = new StringBuilder(chash.Length * […]

客户端和服务器无法通信,因为它们在Windows Server 2008 Web上没有通用算法

我正在开发一个ASP.Net WebForms应用程序。 我们使用PayFort的Start API进行付款。 应用程序在我们的本地计算机上运行正常(Windows 10)但是当我们尝试使用我们的部署服务器(Windows Server Web 2008)上的API进行付款时,它会显示以下错误。 客户端和服务器无法通信,因为它们没有通用算法。 他们的网页上的文档( PayFort Start和SSL / TLS )声明他们使用Tls1.2进行通信。 他们的API已经包含使用Tls1.2作为安全协议的代码 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 我们已经在.Net framework 4.5上构建了应用程序,因为Tls1.2仅由.Net 4.5或更高版本支持。 不用说,我们的服务器安装了.Net Framework 4.5。 我们还在Windows注册表中添加了Tls1.1和Tls1.2的注册表值 使用SSL Labs工具 ,我们还确认两台服务器(我们的服务器和PayFort的API服务器)都支持至少两个密码套件( https://api.start.payfort.com ) 由PayFort的API服务器支持的密码套件 (绿色概述是我们服务器常见的那些) 密码套件由我们的服务器支持 我还使用了Nartac IIS加密软件 ,它显示了以下信息作为Best Practices 我不确定它是否与问题有关,但这里是我们服务器中安装的SSL证书的详细信息 任何人都可以指出我们做错了什么,我们应该怎么做才能与所需的服务器进行通信,并从我们服务器上部署的应用程序付款,因为我们在本地机器上做得很好。

强制配置在wcf客户端c#中使用tls 1.0

我们有一个Web应用程序,其客户端使用WCF实现。 此客户端使用SSL_LVL3与外部服务进行握手。 事实certificate该服务刚刚禁用了SSL_LVL3,因此我们需要将其更改为TLS 1.0。 有一种方法可以强制C#中的TLS安全性: ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 但它会改变应用程序使用的所有服务的安全性,而不是所有服务都接受TLS。 我们想要的是更改web.config以强制WCF服务使用TLS。 有没有办法做到这一点? 这是服务的绑定:

获取错误107(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误

我知道在stackoverflow上有很多与相同主题相关的问题,但在这里我有一些不同的问题: 我使用installer class来reserve a port并在win7/Winxp上bind it with hash : if (Environment.OSVersion.Version.Major > 5) { startInfo.Arguments = @”/c netsh http add urlacl url=https://127.0.0.1:8083/ user=EVERYONE”; netsh http add sslcert ipport=127.0.0.1:8083 certhash=df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 appid={00112233-4455-6677-8899-CCBBCCDDEEFF} clientcertnegotiation=enable; } else { startInfo.Arguments = @”/c httpcfg set urlacl /u https://127.0.0.1:8083/”; httpcfg set ssl -i 127.0.0.1:8083 -h df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 -f 2 } 代码和setup project没有任何问题。 一切正常,除了以下几点: […]

5.7.0必须首先发出STARTTLS命令

我正在尝试通过C#发送电子邮件。 虽然我相信我做的一切都是正确的,但它仍然会抛出这个exception: “SMTP服务器需要安全连接或客户端未经过身份validation。服务器响应为:5.5.1需要身份validation。了解详情” 起初我想,它可能是一个区域/ IP /区域问题……但是当我登录gmail时,没有任何警告。 可以肯定的是,我已经将文件上传到网站以便从那里进行检查,但仍然会出现错误。 比我尝试将端口更改为465.它也没有用。 我首先尝试使用由Google Apps帐户管理的帐户。 所以我认为可能是它,但它不是…… 我现在真的没有想法。 你们中有谁有想法? 这是示例代码: SmtpClient sm = new SmtpClient(“smtp.gmail.com”,587); sm.Credentials = new NetworkCredential(“blabla@gmail.com”,”**”); sm.UseDefaultCredentials = false; sm.EnableSsl = true; sm.DeliveryMethod = SmtpDeliveryMethod.Network; sm.Send(“blabla@gmail.com”,”blabla2@tr3reklam.com”,”Test”,”Test”); **注意**我已经检查了帐户名和密码,它们都是正确的。

加密c#和mysql之间的数据流量

我在C#.Net中有一个Windows应用程序,它使用mysql数据库来存储数据。 Mysql DB和Windows应用程序在同一台机器上。 我正在为我的工作中的系统进行安全审计,其中一个要求是加密C#和Mysql之间的所有流量。 我已经实现了openssl,连接现已加密,但我还需要加密c#和mysql之间的数据流量。 例如,当插入查询从c#执行时,数据包软件(echo mirage)显示明文(整个插入数据查询)可能是我的c#应用程序使用硬编码查询而不是存储过程的原因。 如何加密流量? 请帮忙

HttpListener服务器返回错误:(503)服务不可用

我正在尝试创建一个使用x509证书进行客户端/服务器身份validation的http侦听器。 我的服务器代码如下。 _listener = new HttpListener(); _listener.Prefixes.Add(“https://localhost:8006/”); _listener.Start(); HttpListenerContext context = _listener.GetContext(); 我的客户端代码如下 string url = “https://localhost:8006/”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); var store = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); var cert = store.Certificates.Find(X509FindType.FindBySubjectName, “localhost”, true); request.ClientCertificates.Add((X509Certificate)cert[0]); ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, policyErrs) => { return policyErrs == System.Net.Security.SslPolicyErrors.None; }; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 我相信我已经正确配置了一切。 没有证书策略错误,我已将ssl证书绑定到端口,并且不需要提升权限来运行侦听器。 如果我在代码中或通过Chrome发出网络请求,我会收到此错误消息。 […]

在http://到https:// redirect期间重定向循环

我试图强制页面在SSL下运行,所以我在page_load上实现了以下内容: if (!Request.IsLocal && !Request.IsSecureConnection) { Response.Redirect(Helper.GetInstance().SSLBaseURL() + ScriptName()); } 出于某种原因,这最终会在一个循环中结束。 今天早些时候,我检查了Request.Uri.Scheme,它正在解析为“http”,虽然我显然已经连接到https://www.domain.com/pagename.aspx 。 您是否有任何理由可以想到为什么此页面无法正确检测到我们是否在https下运行?

BufferNotEnough无法创建SSL / TLS安全通道

有时我们收到错误“请求被中止:无法创建SSL / TLS安全通道..”我试图调查此问题,我得到的跟踪日志是: System.Net Information: 0 : [4356] InitializeSecurityContext(In-Buffers count=2, Out-Buffer length=0, returned code=**BufferNotEnough**). System.Net Error: 0 : [4356] Exception in HttpWebRequest#37434592:: – The request was aborted: Could not create SSL/TLS secure channel.. System.Net Error: 0 : [4356] Exception in HttpWebRequest#37434592::EndGetRequestStream – The request was aborted: Could not create SSL/TLS secure channel.. 对于这种情况, BufferNotEnough是什么意思? 谢谢。

使用企业CA的WCF SSL证书

对于应用程序,我需要为WCF服务提供SSL证书, 所以我们安装了它。 如果我使用带有网络浏览器的互联网浏览器通过https,我没有问题,没有警告,没有,所以我认为这个证书被认为对Windows有效。 问题是,当我尝试连接到我的WCF服务器时,我收到此错误: The X.509 certificate CN=myHostName, OU=tom, O=myDomainName, L = MyLocation,S = SO,C = CH链构建失败。 使用的证书具有无法validation的信任链。 替换证书或更改certificateValidationMode。 撤销function无法检查吊销,因为吊销服务器处于脱机状态。 有什么不对? 我怎么知道链的哪个部分无效? 有没有办法知道缺少的部分是什么? 这是我的代码服务器: ServiceHost myHost = new ServiceHost(typeof(MyService)); WSHttpBinding binding = new WSHttpBinding { ReaderQuotas = { MaxStringContentLength = int.MaxValue, MaxArrayLength = int.MaxValue, MaxDepth = int.MaxValue, MaxBytesPerRead = int.MaxValue, MaxNameTableCharCount = int.MaxValue }, MaxReceivedMessageSize […]