Tag: ssl

WCF,HTTPS与HTTP

有两个样本 对于HTTP : using System; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.ServiceModel; using System.ServiceModel.Description; using System.ServiceModel.Security; namespace ConsoleApplication1 { internal class Program { private static void Main(string[] args) { string addressHttps = String.Format(“http://{0}:51222”, Dns.GetHostEntry(“”).HostName); var wsHttpBinding = new BasicHttpBinding(); var serviceHost = new ServiceHost(typeof (HelloWorldService), new Uri(addressHttps)); Type endpoint = typeof (IHelloWorldService); serviceHost.AddServiceEndpoint(endpoint, wsHttpBinding, […]

当前请求是通过使用Azure部署的SSL进行的

context.Request.IsSecureConnection 即使通过HTTPS提供连接,始终在Azure部署中返回false。 在查看为Azure部署的站点发送的标头后,我发现: X-Forwarded-Proto=https 此标头是否保证与网站的客户端连接在HTTPS下,与context.Request.IsSecureConnection连接方式相同?

谈判了哪个TLS版本?

我的应用程序在.NET 4.7中运行。 默认情况下,它将尝试使用TLS1.2。 是否可以知道在执行时协商了哪个TLS版本,例如,如下所示的HTTP请求? HttpWebRequest request = (HttpWebRequest)WebRequest.Create(decodedUri); if (requestPayload.Length > 0) { using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(requestPayload, 0, requestPayload.Length); } } 我只需要这些信息用于记录/调试目的,因此在写入请求流或接收响应之前获取此信息并不重要。 我不希望解析此信息的网络跟踪日志,我也不想创建第二个连接(使用SslStream或类似)。

SSLStream示例 – 如何获取有效的证书?

我在这里使用msdn的SSLStream示例。 客户端代码“似乎”工作正常,因为我可以连接到谷歌,它至少得到过去的身份validation,但服务器没有。 从msdn页面的评论中,我使用此页面上的过程生成我自己的私钥,但它不起作用。 我得到System.NotSupportedException: The server mode SSL must use a certificate with the associated private key.的exceptionSystem.NotSupportedException: The server mode SSL must use a certificate with the associated private key. 所以我很确定我所做的一切都是错的。 所以我的问题很简单:如何从msdn获取/生成适用于我自己的小示例程序的密钥? 无论如何,它都可以是自签名的,但我对SSL来说太新了,甚至不知道我到底需要什么。 我想要做的就是运行as-given示例,除了为我的本地服务器指定自己的证书。 如果我只是想在他们两个之间进行通信,那么知道我必须在我的第二台机器上安装什么是很好的(所以它不是100%本地主机的例子)。 我个人认为这是示例文档中的一个缺陷。 它应该说“要运行它,你需要做A,B,C等”,但事实并非如此。

C#HttpWebRequest SEC_I_RENEGOTIATE间歇性错误

我正在使用C#(。Net framework 3.5)应用程序中的SSL POST调用来处理登录/注销function。 通过HttpWebRequest :: BeginGetResponse()从服务器获取响应的工作时间为80%,但另外20%是间歇性抛出: The request was aborted: Could not create SSL/TLS secure channel. 我使用另一个问题中的建议文章启用了SSL跟踪。 这在请求跟踪中产生了两种不同的模式。 似乎在执行期间,错误: System.Net Error: 0 : [3680] Decrypt returned SEC_I_RENEGOTIATE. 正在接收,导致重新启动安全上下文。 当发生这种情况并且成功时,这是输出(注意我省略了实际地址): System.Net Error: 0 : [3680] Decrypt returned SEC_I_RENEGOTIATE. System.Net Information: 0 : [3680] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 4bec0d0:4c0a8a8, targetName = [omitted].com, inFlags = ReplayDetect, […]

我可以在不断开服务器连接的情况下重用HttpWebRequest吗?

我正在尝试使用我的ASP.NET应用程序调试特定问题 。 客户端运行以下代码: void uploadFile( string serverUrl, string filePath ) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest. Create( serverUrl ); CredentialCache cache = new CredentialCache(); cache.Add( new Uri( serverUrl ), “Basic”, new NetworkCredential( “User”, “pass” ) ); request.Credentials = cache; request.Method = “POST”; request.ContentType = “application/octet-stream”; request.Timeout = 60000; request.KeepAlive = true; using( BinaryReader reader = new […]

检查asp.net mvc 4应用程序中的ssl协议,密码和其他属性

由于合规性原因,我们必须在我们的网络服务器上关闭一些密码和SSL2的支持。 这不是一个真正的问题,但我们也想在他们成功登录网站后通知他们,我们建议在他们尚未使用TLS 1.2连接到服务器的情况下在他们的浏览器中启用TLS 1.2。 所以我的问题是: 如何检测https请求中使用的协议和密码到IIS中运行的ASP.net(MVC 4)应用程序? 我知道有办法将SCHANNEL请求记录到事件日志中,然后再次将它们读出来,但这对我来说听起来非常难看。 我已经看到System.Net.Security.SslStream具有我需要的属性,例如: CipherAlgorithm,HashAlgorithm,KeyExchangeAlgorithm和SslProtocol ,但我不知道在mvc4中我可以在我的Controller Action中获取这些属性的位置应用。

客户端和服务器无法通信,因为它们没有通用算法

我有一个C#PayTrace网关的问题。 下面的代码工作正常,直到昨天我认为由于Poodle Exploit而关闭了SSL3。 运行下面的代码时,我们得到以下消息。 远程服务器已强制关闭连接。 在对该问题进行一些研究之后,我们确定由于我们的IIS Server 7.5配置为仍使用SSL3,因此C#默认为SSL3,PayTrace会强行关闭连接。 然后,我们从服务器中删除了SSL3。 然后导致以下错误: 客户端和服务器无法通信,因为它们没有通用算法。 我的猜测是,在删除SSL 3后,我们需要在服务器上安装额外的SSL算法。 我们的IT人员声称TLS 1.1和TLS 1.2正在运行,ASP.NET现在应该默认为那些。 但我觉得我们还需要在服务器上安装其他东西,我不了解SSL算法,所以我不知道从哪里开始。 var postUrl = new StringBuilder(); //Initialize url with configuration and parameter values… postUrl.AppendFormat(“UN~{0}|”, this.MerchantLoginID); postUrl.AppendFormat(“PSWD~{0}|”, this.MerchantTransactionKey); postUrl.Append(“TERMS~Y|METHOD~ProcessTranx|TRANXTYPE~Sale|”); postUrl.AppendFormat(“CC~{0}|”, cardNumber); postUrl.AppendFormat(“EXPMNTH~{0}|”, expirationMonth.PadLeft(2, ‘0’)); postUrl.AppendFormat(“EXPYR~{0}|”, expirationYear); postUrl.AppendFormat(“AMOUNT~{0}|”, transactionAmount); postUrl.AppendFormat(“BADDRESS~{0}|”, this.AddressLine1); postUrl.AppendFormat(“BADDRESS2~{0}|”, this.AddressLine2); postUrl.AppendFormat(“BCITY~{0}|”, this.City); postUrl.AppendFormat(“BSTATE~{0}|”, this.State); postUrl.AppendFormat(“BZIP~{0}|”, this.Zip); postUrl.AppendFormat(“SADDRESS~{0}|”, this.AddressLine1); […]

使用c#Webclient通过https请求html

我正在通过c#WebClient类从我无法控制的站点尝试各种html资源。 当我尝试访问“ https://archive.org/details/OTRR_In_The_Name_Of_The_Law_Singles ”等url时 我收到错误:System.Net.WebException:请求已中止:无法创建SSL / TLS安全通道。 我找到的解决方案建议我使用以下代码忽略证书要求并使webclient充当浏览器,但我仍然收到相同的错误 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback( delegate { return true; }); using(WebClient webClient = new WebClient()) { webClient.Headers[“User-Agent”] = “Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)”; webClient.Headers[“Accept”] = “text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”; webClient.Headers[“Accept-Language”] = “en-us,en;q=0.5”; webClient.Headers[“Accept-Encoding”] = “gzip,deflate”; webClient.Headers[“Accept-Charset”] = “ISO-8859-1,utf-8;q=0.7,*;q=0.7”; StreamReader sr = new StreamReader(webClient.OpenRead(inputString)); […]

使用C#.Net通过FTPS(SSL / TLS)传输文件

我正在编写一个通过FTP站点同步文件的应用程序。 现在它正在通过常规FTP连接,但现在我们的IT人员希望通过安全的FTPS连接进行设置。 他们为我提供了一个* .cr_证书文件。 如果我在记事本中打开文件,我会看到类似的东西(但真正的键显然不是foobar)。 —–BEGIN RSA PRIVATE FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR —–END RSA PRIVATE KEY—– —–BEGIN CERTIFICATE—– FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR FOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBARFOOBAR —–END CERTIFICATE—– 如何使用此证书文件连接到FTPS服务器以上载和下载文件? 原谅我,但我对涉及通过网络传输文件,安全连接,证书,公钥,私钥等等的任何事情都很陌生……等等…… 我想我想使用FtpWebRequest对象并将EnableSsl属性设置为true。 但我不确定这个证书文件在哪里发挥作用。