在 Java 中处理自签名 SSL 证书

问题描述

一个问题涉及在 Java 中处理自签名证书:

Accept server's self-signed ssl certificate in Java client

接受的答案提供了两种可能的选择:(1) 手动将相关证书加载到本地密钥库中 (2) 使用定制的 TrustManager 绕过 UrlConnection 的安全性

功能仅为从远程 https 安全站点提取内容的网络爬虫的上下文中,选项 2 会产生哪些具体风险。

而且,假设这些风险被认为是不可接受的,那么存在什么替代方案,因为手动提取证书并加载到本地密钥库中是不可行的。

解决方法

不仅来自选项 2,而且来自选项 1,唯一的风险是无法保证您的网络爬虫正在抓取的服务器实际上是您认为的服务器。还有其他风险,但与网络爬虫执行的任务无关。

对于您的第二个问题:您需要确定为什么它是不可接受的,因为在 Java 中编写代码以仅接受自签名证书非常容易。什么特别阻止您编码以接受证书?您可以使用代理服务器自动接受所有证书,但这是一个单独的主题,最好为其创建一个新问题。