目前提供的三个答案需要降低浏览器的安全级别,如果您在主浏览器中执行此操作,可能会使您面临各种攻击,随后将该浏览器用于其他网站,或者只是忘记恢复此更改(或多个变化)。
传统和不安全的 SSL/TLS 功能(SSLv2 和SSLv3、SHA1RSA 签名、RC4和 3DES 密码、MD5 MAC、导出密码、非 PFS 密码、<1024 DH 参数)在默认情况下逐渐被禁用和/或从浏览器中删除,以及好理由。
@AndreKR 有用地指出的另一个问题是浏览器兼容性问题,在这种情况下,专用 VM 中的旧版浏览器可能是最强大的解决方案。
如果无法更换设备,请使用专用 VM 或专用浏览器。下一个最佳选择是允许使用现代安全浏览器的 TLS 代理。在浏览器中启用一个(或两个,或三个......)不安全的功能不是一个安全且可持续的解决方案,当不可避免的情况发生并且所需的功能被完全删除时?(对Chrome、Opera、Firefox的 SSLv3 支持)。
一个安全的替代方案是通过支持旧/旧协议和新协议和密码的东西来代理连接,有很多选择(包括相当重量级的 Apache 反向代理解决方案)。
以下更轻量级的解决方案应该适用于 *nix 和 Windows 系统。这将要求您生成一个密钥/证书——这不一定是一个问题,因为接下来会发生的事情是当代浏览器将拒绝 SHA1 签名的证书。这样,您可以使用 SHA-2 签名的 RSA-2048 证书和现代 TLS 来访问设备。
对于这个例子:
socat 代理
使用socat
:
CERT="cert=mydevice.crt,key=mydevice.key"
SSLSRV="cipher=AES256-SHA,method=TLS1.2,verify=0"
SSLCLI="cipher=AES128-SHA,method=SSL3,verify=0"
socat \
OPENSSL-LISTEN:11443,bind=127.0.0.1,reuseaddr,fork,$CERT,$SSLSRV \
OPENSSL:192.168.1.123:443,$SSLCLI
并连接到 https://127.0.0.1:11443/
笔记
如果需要,修改您的本地hosts
文件以防止来自浏览器的证书名称不匹配警告,因为无论如何您都需要一个内部证书,您可以生成一个具有预期内部名称的证书(不像我遇到的许多设备倾向于使用奇怪或不友好证书名称)。
对于 TLSv1.2 支持,您需要 OpenSSL-1.0.1 或更高版本,以及 socat-1.7.3.0 或更高版本。cipher
和method
选项可以根据需要进行调整,服务器或客户端证书验证也可以。
此解决方案甚至可以扩展到类似的问题,例如仅 SSLv2 的设备,或使用 512 位证书或一组笨拙的密码套件,但您需要确保 OpenSSL 不是使用no-ssl2
或no-ssl3
启用了相关密码套件。
如果我是一名审计员,我宁愿看到记录在案的访问方法(以及升级计划!),而不是等待发生事故的临时解决方案。