当前位置: 首页 > 知识库问答 >
问题:

如何禁用 java 1.8.181 版本的endpoint标识

李星辰
2023-03-14

当我将java从1.8.161升级到1.8.181时,我无法从我的应用程序连接到LDAP,当我尝试使用在LDAP中活动的用户登录应用程序时,会出现以下异常。

javax.nameing.CommunicationException: : [Root exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: 未找到与 IP 地址匹配的使用者替代名称]

变化

core-libs/javax.naming ➜改进LDAP支持在LDAPS连接上启用了endpoint标识。

为了提高LDAPS(安全LDAP over TLS)连接的健壮性,默认情况下启用了endpoint识别算法。

请注意,在某些情况下,以前能够成功连接到 LDAPS 服务器的某些应用程序可能无法再成功连接到 LDAPS 服务器。如果此类应用程序认为合适,可以使用新的系统属性禁用endpoint标识:com.sun.jndi.ldap.object.disableEndpointIdentification

我尝试将该属性设置为true,如下所示,同时设置了其他属性。但它仍然抛出同样的错误。

Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, ctxFactory);
    env.put(Context.PROVIDER_URL, providerUrl);
    env.put(Context.SECURITY_PRINCIPAL, secPrincipal);
    env.put(Context.SECURITY_AUTHENTICATION, secAuthentication);
    env.put(Context.SECURITY_CREDENTIALS, secCredentials);
   env.put("com.sun.jndi.ldap.object.disableEndpointIdentification" ,disableEndpointIdentification);
    DirContext ldapCtx = new InitialDirContext(env);

需要您的帮助我们需要如何以及在哪里将属性< code > com . sun . JNDI . LDAP . object . disableendpointidentificati on 设置为true。

如果我恢复到java 1.8.161版本,它工作正常。

共有2个答案

邓赤岩
2023-03-14

例如,您的证书请求配置(request.inf)

[RequestAttributes]
SAN="ipaddress=10.233.207.65"

[Extensions] 
2.5.29.17 = "{text}" 
continue_ = "ipaddress=10.233.207.65"
keyUsage=digitalSignature,keyEncipherment
extendedKeyUsage=serverAuth
subjectKeyIdentifier=hash
subjectAltName=@alt_names

[alt_names]
IP = 10.233.207.65
谭伟
2023-03-14

doc 讲述的是应用程序系统属性,而不是 Ldap 上下文环境

-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
 类似资料:
  • 我正在使用AWS SNS向移动应用发送推送通知,订阅单个SNS主题下的所有设备。然后,为了发送通知,我只发送到该主题。然而,如果某个endpoint由于任何原因无法接收消息,SNS会将该endpoint标记为禁用。 如果SNS只标记一个永久无效的endpoint,这可能很好,但事实并非如此。因为如果我重新启用它,那么在下一次消息推送后,它可能不会返回再次禁用,这意味着在下一次推送中它可以正确接收消

  • 我想你可以想象家务控制器中有什么,但为了完整起见,这里有相关的部分: 下面是测试在输出中打印的请求: 那么,为什么我的测试会得到401的返回代码,我如何修复它?

  • 我目前正在使用Spring Boot、Hibernate和Spring HATEOAS构建一个带有REST接口的应用程序。我的数据模型被定义为带有注释的bean,我正在使用Spring的功能自动设置一个Hibernate存储库(创建一个扩展

  • 可以在横幅中包含Spring Boot版本。txt通过添加${spring boot.version}。 如何对执行器endpoint执行相同的操作?我尝试将以下两个都添加到我的应用程序属性中,但没有成功: endpoint将打印“${spring boot.version}”(或“@spring boot.version@”),但不会解析占位符变量 我的下一个想法是为Spring Boot版本创

  • 我很难理解目标版本的含义(ES3与ES5)。 在TypeScript中,输出仍然使用Array.prototype.reduce即使我以ES3为目标,它说人们应该将其作为语言规范来阅读,但并没有澄清很多事情。据我所知,设置对输出和警告/错误消息都没有任何影响。 我认为此选项是为了支持Visual Studio功能是否正确?

  • 我想在某些单元测试期间禁用endpoint的安全性。我使用的是webflux功能endpoint,所以下面的配置不起作用。 首先感谢你的帮助