【发布时间】:2021-07-28 04:16:19
【问题描述】:
上一个问题涉及在 Java 中处理自签名证书:
Accept server's self-signed ssl certificate in Java client
接受的答案提供了 2 个可能的选项:(1) 手动将相关证书加载到本地密钥库中 (2) 使用定制的 TrustManager 绕过 UrlConnection 的安全性
在网络爬虫的上下文中,其功能只是从远程 https 安全站点中提取内容,选项 2 会产生哪些具体风险。
而且,假设这些风险被认为是不可接受的,还有什么替代方案存在,因为手动提取证书并加载到本地密钥库是不可行的。
【问题讨论】:
-
别无选择 - 如果您想读取随机的不受信任的内容,那么您将需要一个不检查链的信任库。正如您所说,风险低于普通用户。但这确实意味着您的爬虫可以被简单地“欺骗”——例如,任何人都可以伪装成
google.com,并为您提供任意内容。在您的爬虫中,恶意响应也总是存在 0 天漏洞利用的风险。 -
如果远程站点有已知证书,还有一个替代方案 - 创建您自己的 TrustManager 实例并使用您自己的可信证书密钥库对其进行初始化。
-
@SimonG 我仍然面临收集这些证书并将其加载到密钥库中的问题。
-
@BoristheSpider 如果任意内容是风险的程度,那么它可能是可以接受的。我们还在抓取非安全端点,所以我想我们已经面临您提到的风险?
标签: java java-security