我想实现一个WCF服务,该服务使用由TLS / SSL保护的TCP传输层,并且仍在服务器上使用Windows身份验证(kerberos / NTLM)来识别调用客户端。 具有Windows身份验证的部分已经可以使用,但我不确定连接是否已加密。
我使用NetTcpBinding并像这样创建:
var binding = new NetTcpBinding()
{
ReceiveTimeout = TimeSpan.FromMinutes(30),
OpenTimeout = TimeSpan.FromMinutes(1),
CloseTimeout = TimeSpan.FromSeconds(30),
MaxReceivedMessageSize = int.MaxValue,
ReliableSession =
{
Enabled = true,
InactivityTimeout = TimeSpan.FromMinutes(1)
},
Security =
{
Mode = SecurityMode.Transport,
Transport =
{
ClientCredentialType = TcpClientCredentialType.Windows,
ProtectionLevel = ProtectionLevel.EncryptAndSign,
SslProtocols = SslProtocols.Tls12
}
}
};
我已经使用wireshark嗅了一些包,并在第一个包中找到了以下内容:" application / negotiate"。
我只是想确保连接是用TLS加密的,但我不是因为我不知道如何检查它。 在我的环境中无法使用客户端证书。
请不要只是粘贴一些微软网站的链接,了解如何设置。 没有示例显示如何使用Windows auth和TLS。 该应用程序独立,因此无IIS 或其他内容!
感谢任何帮助!
答案 0 :(得分:0)
这是Net.Tcp与传输安全性和独立托管绑定的示例:https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transport-security-with-windows-authentication
它的配置几乎与您一样。唯一的例外是您添加了可靠的会话(这根本不会影响安全性),并且仅将可用的SSL协议限制为Tls12
(默认值为Ssl3 | Tls | Tls11 | Tls12
)。所以,它仍然安全。
所以,答案是:是的,它是安全的。