- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我可以选择支持客户端证书。这就是我设置 Client certificates
的原因至 Accept
在 IIS 上。这适用于大多数机器。但是,在某些机器上 IIS 返回 500。这可以通过设置 Client certificates
来“解决”。至 Ignore
(这不是我的选择)或通过设置 Negotiate Client Certificate
至 Enabled
(这可以通过 netsh http add ...
或在 DefaultFlags
中将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443\
更改为 2 来完成;这也可以在 IIS 管理器中更改吗?)。虽然(启用)此设置仅从名称来看听起来很合理,但我不明白为什么某些机器需要它而其他机器不需要...
最佳答案
长话短说
如果您需要客户端证书来访问服务器上的任何资源,您可以一直启用它。主要原因是某些客户端由于可能的中间人 (MITM) 攻击而不允许 TLS 重新协商。
如果您的客户端支持 TLS 重新协商并且 MITM 风险可以接受,您可以禁用此功能。
描述
IIS 有两种协商 TLS 的方法:
Negotiate Client Certificate
设置决定使用哪个,如果启用第一个,如果禁用则第二个。以下是来自 Microsoft 博客的更多内容:
- If this setting is enabled, the client certificate will be sent by the client browser when the initial secure connection with the web-server is negotiated.
- If it is disabled, an initial secure connection will be negotiated between the web-server and the browser based on the server certificate, and then the connection will be re-negotiated when the client sends the client certificate.
客户支持和错误
问题是某些客户端不会重新协商 TLS session 。如果客户端不这样做,您可能会在服务器日志中遇到以下错误。将 Negotiate Client Certificate
设置为 Enabled
可以解决此问题。
生成了以下致命警报:20。内部错误状态为 960。
TLS 重新协商 MITM 攻击
一些客户端不重新协商 TLS 连接的原因是由于与 TLS 重新协商相关的中间人 (MITM) 攻击:
Since the discovery of the MITM attack arround SSL Renegotiation, the answer in alot of circles has been to hangup on renegotitation requests.
需要 Negotiate Client Certificate
的客户端可能会这样做以防止 TLS 重新协商期间的 MITM 攻击。
总结
如果您对所有 IIS 资源都要求客户端证书没有问题,启用此功能可能允许您与更多客户端进行互操作,并使您能够进一步保护您的流量。
在了解 MITM 风险的同时禁用它以支持不同的 TLS 客户端身份验证支持。
关于ssl - 什么时候需要将 "Negotiate Client Certificate"设置为已启用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49024391/
好吧,我已经阅读了我能找到的与此错误有关的每个线程和问题,但令人惊讶的是没有找到解决方案。我试图在 IIS 托管的 WCF 服务 (.NET 4.0) 上要求 Windows 身份验证,到目前为止,该
我想对浏览器发送到网站的 Accept_Language 使用react。 有人知道我在哪里可以获得浏览器可能发送到网站的所有可用 Accept_Languages 的可靠列表吗? 非常感谢! 最佳答
我的应用程序中有套接字通知,当我在本地运行时效果很好,但是当我部署到我的 VM 时,它提示给出以下消息。 Error: Error during negotiation request. at
我正在尝试访问受密码保护的站点。它没有使用基本身份验证(即使在 Firefox 中弹出相同的用户/密码框),因为响应 header 是 WWW-Authenticate: Negotiate . 我想
我正在尝试使用 JSch (0.1.44-1) 通过 ssh 连接到远程 sftp 服务器,但在 session.connect(); 期间,我收到此异常: com.jcraft.jsch.JSchE
我正在尝试使用 Loopback为我现有的数据库创建一个 api。当我尝试“发现”模型时,出现此错误: Message: Cannot find module 'negotiator' Request
我正在尝试使用 JSch (0.1.44-1) 通过 ssh 连接到远程 sftp 服务器,但在 session.connect(); 期间我收到此异常: com.jcraft.jsch.JSchEx
这是我使用paramiko的代码: #!/usr/bin/env python from paramiko.client import SSHClient from paramiko.client
我尝试上传应用程序,但在此屏幕上等待了 2 小时。我终于收到了应用商店连接错误。错误消息是“应用商店连接无法处理请求。请重试或使用不同的传输方式(1360)”。我该怎么办?? 最佳答案 这是网络问题。
我正在使用 pysftp 下载和上传一些文件。这个完全相同的代码我刚在一个小时前运行并且很好,但现在我得到了这个“EOF during negotiation”错误。我在这里缺少什么? >>> sft
我可以选择支持客户端证书。这就是我设置 Client certificates 的原因至 Accept在 IIS 上。这适用于大多数机器。但是,在某些机器上 IIS 返回 500。这可以通过设置 Cl
我正在尝试使用 Cordova 发布一个新应用程序。我已经确认了证书或配置了东西。我确实遵循“产品”->“存档”->“验证”过程,它成功了,没有错误消息。最后我点击了“Distribution”但是它
我已经使用 Indy 发送电子邮件很多年了,而且它一直运行良好。目前我使用的是 Delphi 10.4,以及它附带的 Indy 版本。 今天,当我尝试使用特定服务器时,即使一切设置都照常进行,我也遇到
我们有超过 100 个客户端站点调用的 WCF 服务。今天我们开始获取 Exception: Server 'http://[url]/services/[service].svc/ws' sent
首先是negotiate , ntlm和 kerberos windows身份验证的三种不同实现方式? IE 发送这个:Authorization: Negotiate YIIFswYGKwYB ..
我了解基本身份验证和摘要身份验证。但我已经搜索了很多,而且我正在为 NTLM、身份验证和协商而苦苦挣扎。 我认为,如果我错了,请纠正我,NTLM 和 Authenticate 是同一协议(protoc
我有Eclipse Juno,这是带有Git服务器的Synology Server DS213 +。我试图将项目从Git Server checkout 到工作区,并且在Eclipse中使用EGit时
我了解基本身份验证和摘要身份验证。但我已经搜索了很多,而且我正在为 NTLM、身份验证和协商而苦苦挣扎。 我认为,如果我错了,请纠正我,NTLM 和 Authenticate 是同一协议(protoc
SignalR 在本地主机上工作,但部署在 Azure 中时不起作用 Asp.net Core 1.0.0(.Net Framework 4.6.1) SignalR.Core 2.2.1 publi
我意识到有很多建议的解决方案可以解决“HTTP 请求未经客户端身份验证方案‘协商’授权。从服务器收到的身份验证 header 是‘协商,NTLM’”,但没有一个对我有用。我相信我继续收到的错误与 II
我是一名优秀的程序员,十分优秀!