我有一个.Net 4.6 WCF Web服务(Web项目中的.svc文件),我想获取连接客户端的TLS版本,以便可以在服务器端进行记录。
借助此信息,我可以创建一个报告,以在关闭早期版本的TLS之前通知受影响的客户。
谢谢
答案 0 :(得分:0)
下面的语句可以看到WCF当前使用哪个TLS
版本。
Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
可能的值为以下Enum
。
https://docs.microsoft.com/en-us/dotnet/api/system.net.securityprotocoltype?view=netframework-4.8
实际上,大多数值是SystemDefault。除非客户端指定了要使用的版本。这是因为TLS通信需要DotNet framework SDK
和OS版本的支持。协商后,服务器和客户端将优先使用最新(安全)版本。无法获得实用版本,因为它取决于服务器端和客户端的环境。
有关详细信息,请参见下面的链接。
https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls?view=netframework-4.8
当我们要在服务器端禁用TLS版本时,以下链接可能对您有用。
WCF Service TLS 1.2 Enforcement
随时让我知道是否有什么可以帮助您的。
答案 1 :(得分:0)
最后,我用
装饰了WCF服务。[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
然后使用收集信息;
var CRYPT_PROTOCOL = Convert.ToString(HttpContext.Current.Request.ServerVariables["CRYPT_PROTOCOL"]);
var CRYPT_CIPHER_ALG_ID = Convert.ToString(HttpContext.Current.Request.ServerVariables["CRYPT_CIPHER_ALG_ID"]);
var CRYPT_HASH_ALG_ID = Convert.ToString(HttpContext.Current.Request.ServerVariables["CRYPT_HASH_ALG_ID"]);
var CRYPT_KEYEXCHANGE_ALG_ID = Convert.ToString(HttpContext.Current.Request.ServerVariables["CRYPT_KEYEXCHANGE_ALG_ID"]);
对于TLS1.2,CRYPT_PROTOCOL可以为400,对于TLS 1.0可以为40,对于SSLv3可以为10
我还没有检验亚伯拉罕的回答(谢谢)