相关:Make Https call using HttpClient
以下是一个说明我如何进行Web服务调用的示例:
class Program
{
static void Main(string[] args)
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(@"text/javascript") { CharSet = "utf-8" });
client.BaseAddress = new Uri("https://...");
HttpResponseMessage msg = client.GetAsync("jobs").Result;
string json = msg.Content.ReadAsStringAsync().Result;
// Deserialize this for later use
}
}
正如我从那里的答案以及this那样理解它,这将建立一个安全的TLS连接,并且邮件将被加密。
我对Wikipedia description of TLS 1.2以及之前提到的文档和Q& A的理解是,它使用公钥加密来验证服务器的身份和AES来进行交换。然而,维基百科对于确切的细节(例如AES密钥大小和模式,密钥的交换和存储方式等)含糊不清。如何处理HttpClient
?它使用了什么AES密钥大小和模式(如果它 ,实际上是使用AES),它如何进行密钥交换,以及它如何存储密钥?
答案 0 :(得分:3)
总结评论(作为社区Wiki答案,因为我总结了其他人的资料),内容将被加密,但加密的确切细节是与服务器协商的(意味着没有一个正确的答案 - 这取决于配置)。
Microsoft提供了有关如何查找详细信息here的说明。他们建议在App.config中添加以下内容:
<system.diagnostics>
<sources>
<source name="System.Net" tracemode="includehex" maxdatasize="1024">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.Cache">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.Http">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.Sockets">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
<source name="System.Net.WebSockets">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net" value="Verbose"/>
<add name="System.Net.Cache" value="Verbose"/>
<add name="System.Net.Http" value="Verbose"/>
<add name="System.Net.Sockets" value="Verbose"/>
<add name="System.Net.WebSockets" value="Verbose"/>
</switches>
<sharedListeners>
<add name="System.Net"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="network.log"
/>
</sharedListeners>
<trace autoflush="true"/>
</system.diagnostics>
这会产生高度详细的连接日志(包括有关正在使用的加密方案的非常具体的详细信息)。例如,我能够发现AES密钥长度为128位,它们使用Elliptic Curve Diffie-Hellman作为密钥协议,以及安全性的各种其他细节。