我正在尝试在托管我们的IIS托管的raven服务器(build 2947)的同一台服务器上运行客户端应用程序。托管raven的IIS站点绑定到SSL证书/主机名 - 我们只想强制执行安全请求(并将http请求重定向到https)。当我将连接设置为使用https协议时:
Url=https://ravendb.somewhere.net;Database=StaffDb
打开连接时出现401拒绝错误。如果我禁用重定向并且非安全地连接到localhost,它可以正常工作:
Url=http://localhost;Database=StaffDb
The docs suggest SSL can only be enabled when running as a service - 这是否意味着我们无法在安全的IIS站点内运行?
答案 0 :(得分:1)
使用SSL时,必须使用证书中指定的主机名。
答案 1 :(得分:0)
感谢Ayende Rahien提供离线支持,事实证明这个问题实际上是由于IIS本身的特性:
Windows XP SP2和Windows Server 2003 SP1包含环回检查 旨在帮助防止反射攻击的安全功能 在你的电脑。因此,如果FQDN或。身份验证失败 您使用的自定义主机标头与本地计算机不匹配 名。
Ayende's blog provides some more context,我按照a Microsoft support article中列出的步骤修正了这个问题:
方法2:禁用环回检查(推荐方法较少)第二种方法是通过设置禁用环回检查 DisableLoopbackCheck注册表项。
要设置DisableLoopbackCheck注册表项,请按照下列步骤操作:
.....
2.单击“开始”,单击“运行”,键入regedit,然后单击“确定” 3.在注册表编辑器中,找到并单击以下注册表项:
的 HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ LSA 强>
4.右键单击“Lsa”,指向“新建”,然后单击“DWORD值” 5.键入 DisableLoopbackCheck ,然后按ENTER键 6.右键单击“DisableLoopbackCheck”,然后单击“修改” 7.在“数值数据”框中,键入 1 ,然后单击“确定” 8.退出注册表编辑器,然后重新启动计算机。