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

Spark通过SSL连接Docker部署的MongoDB遇证书异常问题

解决Mongo-Spark连接器SSL连接的"No subject alternative names present"错误

问题根源

你碰到的java.security.cert.CertificateException: No subject alternative names present错误,核心原因是Java的SSL证书校验逻辑比3T MongoChef严格得多:

  • 你生成证书时把CN字段设为了127.0.0.1:27117(带端口的IP),但Java会把整个字符串当作主机名,而实际连接的主机是127.0.0.1、端口是独立的,这直接导致主机名匹配失败。
  • 更关键的是,新版Java要求SSL证书必须包含**Subject Alternative Names(SAN)**字段,明确列出允许的主机IP或域名,仅靠CN字段已经不被认可。

解决方案:重新生成包含SAN的SSL证书

你需要修改证书生成流程,添加SAN字段指定MongoDB的合法IP/域名,具体步骤如下:

1. 创建OpenSSL配置文件

新建一个openssl.cnf文件,内容如下:

[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req

[dn]
C=US
ST=CA
L=Santa Monica
O=test
OU=IT
CN=127.0.0.1

[v3_req]
subjectAltName = IP:127.0.0.1

如果MongoDB是远程部署,把IP:127.0.0.1换成服务器实际IP;如果用域名访问,改成DNS:your-mongo-hostname。

2. 重新生成所有证书和密钥

执行以下命令替换原证书生成脚本:

# 生成Root CA密钥与证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt -subj "/C=US/ST=CA/L=Santa Monica/O=test/OU=IT/CN=RootCA"

# 生成MongoDB密钥
openssl genrsa -out mongodb.key 2048

# 生成MongoDB CSR(关联配置文件)
openssl req -new -key mongodb.key -out mongodb.csr -config openssl.cnf

# 生成带SAN的MongoDB证书
openssl x509 -req -in mongodb.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out mongodb.crt -days 500 -sha256 -extfile openssl.cnf -extensions v3_req

# 生成PEM文件
cat mongodb.key mongodb.crt rootCA.crt > mongodb.pem
cat rootCA.key rootCA.crt > rootCA.pem

# 清理旧密钥库并重新生成Java兼容版本
rm mongo.pkc mongo-truststore
openssl pkcs12 -CAfile rootCA.pem -export -in mongodb.pem -out mongo.pkc -password pass:test12
echo "y" | keytool -importcert -trustcacerts -file rootCA.crt -keystore mongo-truststore -storepass test12

3. 更新MongoDB容器与Spark配置

  • 重启MongoDB Docker容器,确保挂载的是新生成的证书文件
  • 保持Spark的JVM参数不变,重新运行Spark任务

为什么3T MongoChef能正常连接?

3T MongoChef的SSL证书校验逻辑相对宽松,它可能忽略了SAN字段的强制要求,或者允许CN字段包含端口号;而Java的SSL实现(尤其是Oracle JDK)严格遵循RFC标准,必须通过SAN字段匹配主机名。

内容的提问来源于stack exchange,提问作者Tom Lous

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:52