Tag: https

将数据发布到HTTPSurl时,GetRequestStream()会抛出超时exception

我正在调用Apache服务器上托管的API来发布数据。 我正在使用HttpWebRequest在C#中执行POST。 API在服务器上具有普通HTTP和安全层(HTTPS)PORT。 当我调用HTTP URL时,它完全正常。 但是,当我调用HTTPS时,它会给我超时exception(在GetRequestStream()函数中)。 任何见解? 我正在使用VS 2010,.Net framework 3.5和C#。 这是代码块: string json_value = jsonSerializer.Serialize(data); HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(“https://server-url-xxxx.com”); request.Method = “POST”; request.ProtocolVersion = System.Net.HttpVersion.Version10; request.ContentType = “application/x-www-form-urlencoded”; byte[] buffer = Encoding.ASCII.GetBytes(json_value); request.ContentLength = buffer.Length; System.IO.Stream reqStream = request.GetRequestStream(); reqStream.Write(buffer, 0, buffer.Length); reqStream.Close(); 编辑:彼得建议的控制台程序工作正常。 但是当我添加需要发布到API的数据(以JSON格式)时,它会抛出操作超时exception。 这是我添加到基于控制台的应用程序的代码,它会抛出错误。 byte[] buffer = Encoding.ASCII.GetBytes(json_value); request.ContentLength = buffer.Length;

透明代理通过https访问时出现SSL错误

在我的公司环境中,有一个透明的代理,需要互联网访问凭证(每四个小时)。 在我的应用程序中,我成功传递了这样的凭据 var client = new WebClient(); client.Credientals = new NetworkCredential(“username”, “password”); string result = client.DownloadString(“http://…”); // this works! 但是,当我的初始请求是“https://”url时,会发生exception抛出:“底层连接已关闭:无法为SSL / TLS安全通道建立信任关系。” 现在我目前的工作是: 捕获访问“https://”url时抛出的WebException 将我的凭据添加到对任意“http://”站点的新请求 (这应该“打开”互联网四小时的窗口) 返回并重新尝试“https://”请求 我想知道是否有更好/更清洁的方法来做到这一点?

检查自签名证书(SSL,C#)

在我的桌面应用程序中,我使用HTTPS连接。 证书是自签名的。 我如何以编程方式检查 c#中的自签名证书? 我使ia回调“ValidateRemoteCertificate”: ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate) 默认情况下,我的“ValidateRemoteCertificate”方法始终返回TRUE。 但我认为我需要检查此证书的有效或无效。 怎么检查? 我必须在“ValidateRemoteCertificate”中查看什么?

在HTTPS请求中,Request.IsSecureConnection返回false

我有一个在https(SSL)中工作的asp.net应用程序。 这在我的本地计算机和Amazon AWS(生产环境)中运行良好。 但是当我在办公室托管这个应用程序(用于测试)时,会发生一些奇怪的事情 我可以在浏览器和锁定标志中看到https 。 Fiddler还显示输出已加密并显示端口443。 但是HttpContext.Current.Request.IsSecureConnection返回false 并且HttpContext.Current.Request.Url.Scheme返回http 。 在办公室,我们使用的是Juniper SSG防火墙和TMG 2010(Forefront Threat Management Gateway 2010)。 因此服务器通过Juniper和TMG 2010接收请求。提前感谢。

在* some * WebAPI控制器上禁用SSL客户端证书?

为未来的读者编辑 :不幸的是,获得赏金的答案不起作用; 我现在无能为力。 但是请在下面阅读我自己的答案(通过测试) – 确认可以使用最少的代码更改 我们有一个完全在ASP.NET WebAPI 2.2中的Azure云服务(WebRole)(没有MVC,前端是Angular)。 我们的一些控制器/ REST端点通过SSL(客户端证书身份validation/相互身份validation)与第三方云服务通信,其余控制器/端点与HTML5 / AngularJS前端通信,也通过SSL(但更传统的服务器身份validation) SSL)。 我们没有任何非SSL端点。 我们通过云服务启动任务启用了客户端SSL,例如: IF NOT DEFINED APPCMD SET APPCMD=%SystemRoot%\system32\inetsrv\AppCmd.exe %APPCMD% unlock config /section:system.webServer/security/access 问题:该设置是站点范围的,因此即使用户访问第一页(例如https://domain.com ,返回angular.html的index.html),他们的浏览器也要求他们提供客户端SSL证书。 (下图) 如果有办法要么 将客户端SSL证书请求限制为仅与第三方云服务通信的WebAPI控制器? 要么 为我们的前端驱动webapi控制器跳过客户端SSL身份validation? 我们的服务器的web.config很复杂,但相关的代码片段如下: 并且客户端的屏幕截图访问常规WebAPI端点但尚未尝试客户端SSL身份validation(在任何浏览器,Chrome,Firefox或IE中都会发生)

登录使用Live.com身份validation的站点

我一直在尝试自动登录我经常访问的网站www.bungie.net。 该站点与Microsoft和Xbox Live相关联,因此在人们登录其站点时使用Windows Live ID API。 我对创建网络蜘蛛/机器人比较陌生,我担心我误解了一些最基本的概念。 我已经模拟登录到其他网站,如Facebook和Gmail,但live.com给了我一些麻烦。 无论如何,我一直在使用Wireshark和Firefox插件篡改数据来试图弄清楚我需要发布什么,以及我需要包含哪些我的请求。 据我所知,这些是登录此站点必须遵循的步骤。 1.访问https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=1268167141&rver=5.5.4177.0&wp=LBI&wreply=http:%2F%2Fwww.bungie.net%2FDefault.aspx&id=42917 2.收到MSPRequ和MSPOK的cookies。 3.将表单ID“PPSX”中的值,表单ID“PPFT”中的值,您的用户名,密码全部发布到更改的URL,类似于:https://login.live.com/ppsecure/post。 srf?wa = wsignin1.0&rpsnv = 11&ct =(在该URL的末尾有一些数字会发生变化) 4. Live.com向用户返回一个包含更多隐藏表单的页面。 然后,客户端将“ANON”forms的值,“ANONExp”forms的值和“t”forms的值发布到URL:http://www.bung ie.net/Default.aspx?wa = wsignin1.0 5.在发布该数据之后,向用户返回各种cookie,其中最重要的是“BNGAuth”,即该站点的登录cookie。 我遇到麻烦的地方是第五步,但这并不意味着我已经正确完成了所有其他步骤。 我发布了来自“ANON”,“ANONExp”和“t”的数据,但是我没有返回一个名为“RSPMaybe”的cookie,而是重新定向到主页。 当我查看Wireshark日志时,我注意到当我使用Firefox登录时以及我的程序运行时,日志与我之间的不同之处。 它可能没什么 但我会在这里附上图片供你查看 。 在第四步发布数据之前,我正从网站返回一个HTTP数据包。 我不确定这是怎么回事,但它必须是我在HTTPS步骤中做错的一个副作用。 using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Text; using System.Net; using System.IO; using System.IO.Compression; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using System.Web; namespace […]

支持https的http侦听器以c#编码

我发现了很多答案如何将httplistener设置为使用HTTPS,但每个解决方案都需要使用命令行。 我想这是最快的方法,但我想编写C#类来处理这个问题。 在旧的解决方案中,我使用了webserver类(在Internet的某个地方找到,我不记得确切的名称),它允许以这种方式添加证书: webserver.Certificate = new X509Certificate2(“MyCert.pfx”, “MyPassword”); 有没有办法用httplistener实现这一点? 从代码显然。 问候。

IE中的文件下载因https失败而失败

我正在尝试通过HTTPS下载文件,但它在IE中失败但与Firefox和Chrome完美配合: aspx代码如下: 按钮单击代码背后的代码如下: protected void Button1_Click(object sender, EventArgs e) { string filename = TextBox1.Text; string filepath = Server.MapPath(filename); byte[] bytFile = null; FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); long numBytes = new FileInfo(filepath).Length; bytFile = br.ReadBytes((int)numBytes); string extension = “.xlsx”; Response.ClearHeaders(); Response.Clear(); Response.Buffer = true; if (extension == “.doc”) […]

为什么我的WSDL仍然显示基本的http绑定与http的位置值?

我启用了https绑定,但我的WSDL的肥皂地址为http。 有什么想法吗? 谢谢! 这是我的web.config文件:

C#SSL服务器模式必须使用具有相应私钥的证书

我将学习如何在C#中处理作为服务器端的HTTPS流量,并且在第一步中我遇到了一些麻烦。 这是一些代码( http://pastebin.com/C4ZYrS8Q ): class Program { static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { if (sslPolicyErrors == SslPolicyErrors.None) return true; Console.WriteLine(“Certificate error: {0}”, sslPolicyErrors); return false; } static void Main() { var tcpListener = new TcpListener(IPAddress.Parse(“127.0.0.1”), 8080); tcpListener.Start(); var clientAccept = tcpListener.AcceptTcpClient(); Thread.Sleep(1000); if (clientAccept.Available > 0) { var sslStream = […]