如果您使用的是IIS,看起来可以向IIS日志中添加一些扩展日志。
https://cloudblogs.microsoft.com/microsoftsecure/2017/09/07/new-iis-functionality-to-help-identify-weak-tls-usage/
要启用这个新功能,这四个服务器变量需要
配置为IIS中自定义字段的源
applicationHost.config文件. 自定义日志记录可以在任意一个服务器上配置
服务器级或站点级。以下是站点级配置示例:
<site name="Default Web Site" id="1" serverAutoStart="true">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
<logFile>
<customFields>
<clear />
<add logFieldName="crypt-protocol" sourceName="CRYPT_PROTOCOL" sourceType="ServerVariable" />
<add logFieldName="crypt-cipher" sourceName="CRYPT_CIPHER_ALG_ID" sourceType="ServerVariable" />
<add logFieldName="crypt-hash" sourceName="CRYPT_HASH_ALG_ID" sourceType="ServerVariable" />
<add logFieldName="crypt-keyexchange" sourceName="CRYPT_KEYEXCHANGE_ALG_ID" sourceType="ServerVariable" />
</customFields>
</logFile>
</site>
每个SSL info字段都是一个十六进制数,映射到
纯文本请求,所有四个字段都将记录为-。
再次提醒我:
看起来像
CRYPT_PROTOCOL
400
对于TLS1.2,
40
对于TLS 1.0,
10
用于IIS文本日志中的SSLv3。
从示例中可以看出,如果要尝试在自定义日志中包含比IIS日志本身更易于自定义的ServerVariable值,则每个请求上可能都有ServerVariable值。
好问题!我也许有机会用这个答案。
所以。。。看起来您可以从WebAPI获取ServerVariables,但只能以意外的方式获取。请参见下面的片段。如果您枚举集合或调用Keys属性,您得到的似乎只是一些变量子集。但是,如果您在这些操作之前显式请求CRYPT变量,那么
can indeed
从你的控制器那里得到它们。我在WebAPI 5.2.6上尝试了这个,目标是在IIS下运行的.net4.6.2作为Azure经典云服务。我建议你试试这个,看看是否对你有用。如果您对服务器变量有较新的引用,请编辑此答案并替换
https://docs.microsoft.com/en-us/iis/web-dev-reference/server-variables
用你的链接。
if (Request.Properties.TryGetValue("MS_HttpContext", out object context))
{
if (context is HttpContextWrapper wrapper)
{
var v = wrapper.Request?.ServerVariables;
if (v != null)
{
var headers = response.Headers;
const string CRYPT_PROTOCOL = nameof(CRYPT_PROTOCOL);
try
{
headers.Add($"SV_{CRYPT_PROTOCOL}", $"[{v[CRYPT_PROTOCOL].Replace("\r", "0x0D").Replace("\n", "0x0A")}]");
}
catch (Exception ex)
{
headers.Add($"SV_{CRYPT_PROTOCOL}", ex.Message);
}
foreach (string key in v.AllKeys)
{
headers.Add($"SV_{key}", v[key].Replace("\r", "0x0D").Replace("\n", "0x0A"));
}
headers.Add($"SV_DONE", "All Server Variables Replaced");
}
}