You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于WebScarab Jar的代理拦截HTTPS请求时遇MD2withRSA算法约束错误

解决WebScarab代理的SSLHandshakeException(MD2withRSA算法约束问题)

这个问题我之前帮同行排查过,核心原因是JDK默认禁用了MD2这种弱签名算法,而WebScarab生成的代理证书恰好使用了MD2withRSA签名,触发了JDK的安全校验机制,导致握手失败。下面给你两种可行的解决办法:

方法一:临时修改JDK的安全配置(快速解决)

JDK从7u40版本开始,就把MD2算法加入了禁用列表。你需要修改JDK的安全配置文件来解除对MD2的限制:

  • 找到你的JDK安装目录:
    • 对于JDK 8及以下:路径是{JDK_HOME}/jre/lib/security/java.security
    • 对于JDK 9+:路径是{JDK_HOME}/conf/security/java.security
  • 打开文件,找到jdk.certpath.disabledAlgorithms这一行,把其中的MD2或者MD2withRSA从禁用列表中移除。比如:
    原配置可能是:
    jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024
    
    修改后:
    jdk.certpath.disabledAlgorithms=MD5, RSA keySize < 1024
    
  • 保存文件后,重启WebScarab,再访问HTTPS URL应该就能正常拦截了。

⚠️ 注意:这种方法会降低JDK的安全级别,只是临时解决方案,测试完成后建议改回原配置。

方法二:调整WebScarab的证书签名算法(更安全)

如果WebScarab支持自定义证书签名算法,优先用这个方法:

  • 打开WebScarab的设置界面,找到「证书生成」相关的配置项
  • 将签名算法从MD2withRSA改为更安全的算法,比如SHA256withRSA或者SHA1withRSA(SHA1现在也不算最安全,但比MD2强很多)
  • 重新生成WebScarab的代理证书,然后配置浏览器信任这个新证书,再尝试拦截请求

至于为什么不用WebScarab时请求正常?因为目标网站的证书用的是符合JDK安全要求的签名算法(比如SHA256withRSA),只有WebScarab生成的中间证书用了被禁用的MD2算法,才会触发这个错误。

内容的提问来源于stack exchange,提问作者Yaazhini Ravichandran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:34:31