使用StormCrawler爬取部分URL时遭遇X509证书异常
解决StormCrawler爬取HTTPS网站时的SunCertPathBuilderException异常
这个错误本质上是JVM无法验证目标网站的SSL证书导致的——要么网站用的是自签名证书,要么颁发证书的CA不在JVM默认的信任证书库中。下面给你两种可行的解决思路,按需选择:
方法一:将网站证书导入JVM信任库(推荐生产环境)
这是最安全的做法,让JVM信任目标网站的证书:
- 第一步:获取目标网站的证书
你可以通过浏览器导出(比如Chrome:访问网站→点击地址栏锁图标→证书→详细信息→复制到文件→选择Base64编码的X.509格式保存),或者用openssl命令抓取:openssl s_client -connect example.com:443 </dev/null | openssl x509 -outform PEM > example.crt - 第二步:导入到JVM的cacerts信任库
找到你的JDK安装目录,执行以下命令(默认密码是changeit):
注意:如果是JDK 9+,信任库路径为keytool -importcert -file /path/to/example.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -alias example-website-cert$JAVA_HOME/lib/security/cacerts。
方法二:临时跳过SSL证书验证(仅测试环境使用)
如果只是测试爬取,不想折腾证书导入,可以让StormCrawler忽略SSL验证,但生产环境绝对不要这么做,会带来安全风险:
- 创建一个自定义的
HttpClientBuilderConfigurator类,实现忽略SSL验证的逻辑:import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.ssl.SSLContexts; import org.apache.storm.crawler.protocol.httpclient.HttpClientBuilderConfigurator; import javax.net.ssl.SSLContext; import java.security.cert.X509Certificate; import org.apache.http.conn.ssl.TrustStrategy; public class IgnoreSSLConfig implements HttpClientBuilderConfigurator { @Override public void configure(org.apache.http.impl.client.HttpClientBuilder builder) { try { // 信任所有证书 TrustStrategy trustAll = (X509Certificate[] chain, String authType) -> true; SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, trustAll).build(); SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); builder.setSSLSocketFactory(sslSocketFactory); } catch (Exception e) { throw new RuntimeException("Failed to configure SSL ignoring", e); } } } - 在StormCrawler的
crawler-conf.xml配置文件中,指定这个自定义类:<property> <name>httpclient.configurator.class</name> <value>com.your.package.IgnoreSSLConfig</value> </property> - 重新打包或部署StormCrawler拓扑,让配置生效。
额外检查项
确认你已经在StormCrawler配置中正确设置了默认HTTPS协议:
http.agent.protocol: https
内容的提问来源于stack exchange,提问作者isspek
相关产品推荐
相关产品推荐

