将 Cisco ASA 升级到代码版本 9.12(1)3 后,我无法访问我们用于许多自动化工具的 HTTPS 管理界面。
在先前代码(9.8 或 9.10)中起作用的示例 curl:
curl -k -u mah_user https://10.10.10.1/admin/exec/show+version
现在,我们收到的是 400 Bad Request 错误,而不是该命令的输出。
发生了什么变化?
将 Cisco ASA 升级到代码版本 9.12(1)3 后,我无法访问我们用于许多自动化工具的 HTTPS 管理界面。
在先前代码(9.8 或 9.10)中起作用的示例 curl:
curl -k -u mah_user https://10.10.10.1/admin/exec/show+version
现在,我们收到的是 400 Bad Request 错误,而不是该命令的输出。
发生了什么变化?
从 ASA 代码 9.12 开始,您必须向user-agent
ASA 管理接口提供包含 HTTP 请求的标头。
在ASA 代码版本 9.12 发行说明 中,它指定了以下内容:
允许非基于浏览器的 HTTPS 客户端访问 ASA
您可以允许非基于浏览器的 HTTPS 客户端访问 ASA 上的 HTTPS 服务。默认情况下,允许使用 ASDM、CSM 和 REST API。
新的/修改的命令:http server basic-auth-client
他们在此输出中没有明确说明的是,ASA 管理“API”以前不是访问 ASA 的受支持方式。它旨在供 ASDM 或他们自己的 REST API 包装器使用。
为了向“我们其他人”开放它并使其支持行为(他们需要这样做,因为在 Firepower 硬件上运行的 ASA 代码上没有 ASA REST API java 小程序),他们添加了一些新的限制。
您可以执行以下任一操作:
添加user-agent
具有您在其中指定的值的标头http server basic-auth-client <my-user-agent-goes-here>
http server basic-auth-client mah_user_agent
curl -k -u mah_user -A mah_user_agent https://10.10.10.1/admin/exec/show+version
使用预先存在/支持的user-agent
标头之一:
curl -k -u mah_user -A ASDM https://10.10.10.1/admin/exec/show+version
其中任何一个都适合您,但我更喜欢第二个,因为它不需要更改 ASA 上的配置即可运行。
还值得注意的是,在我的测试中,您还可以发送user-agent: ASDM
包含所有先前版本的 ASA 代码的标头,他们只是不关心您发送或设置的该值的内容。