首页 > 解决方案 > SSLHandshakeException 证书不匹配任何主题替代名称

问题描述

我正在尝试通过 JAAS 将应用程序身份验证从 LDAP(工作正常)切换到 LDAPS。该应用程序在 JVM 上运行。我遵循了供应商操作指南(Rundeck - jaas LDAPS 配置问题),但我遇到了问题。

从日志:

Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: javax.net.ssl.SSLPeerUnverifiedException: Certificate for <ActiveDirectoryIP> doesn't match any of the subject alternative names: <ActiveDirectoryFQDN>

我注意到 DNS 中的 ActiveDirectoryFQDN 是小写的,但在从 openssl s_client 命令导入的 cert/pem 中是大写的。SSL 证书应该区分大小写,但也许 Java 会以其他方式处理它?作为一种解决方法,我尝试在 /etc/hosts 中为 ActiveDirectoryFQDN 添加大写条目,并将 /etc/nsswitch 修改为:

hosts: files [success=return] dns

但没有喜悦。我无法修改 DNS。

是否有理由忽略 SSLHandshakeException 错误和/或通常禁用 JVM 的 SSL 验证(通过 OPTS)?

标签: javalinux

解决方案


不知道为什么我之前没有考虑过 - 解决方案非常简单:只需在应用程序配置中替换<ActiveDirectoryIP><ActiveDirectoryFQDN>仅针对 AD FQDN 颁发的 AD 证书(IP 没有 alt)。


推荐阅读