tec*_*rat 6 java openssl ldap nginx spring-ldap
我很好奇为什么有些Web服务器(例如Nginx)以相反的顺序提供客户端SSL DN.
Web应用程序将DN发布到Java Web服务,该服务正在尝试创建Java javax.naming.ldap.LdapName.
标准订单(LDAP或X500Name):
"CN=Jimmy Blooptoop,OU=Someplace,OU=Employees,DC=Bloopsoft-Inc"
Run Code Online (Sandbox Code Playgroud)
逆序(OpenSSL Oneline格式)(Nginx返回_ $ ssl_client_s_dn_):
"/DC=Bloopsoft-Inc/OU=Employees/OU=Someplace/CN=Jimmy Blooptoop"
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
哪一个与LDAP RFC匹配?
他们俩都这样?
关于LDAP RFC的说明:
有许多与LDAP相关的RFC:https://www.ldap.com/ldap-specifications-defined-in-rfcs
许多人提到不同的人,这里是对他们的快速历史的尝试:
最新的One,其他人已废弃: RFC 4514:轻量级目录访问协议(LDAP):可分辨名称的字符串表示
Java库:
是否存在来回转换的Java库(从反向转换为非反转)?LdapName抛出InvalidNameException.似乎应该有,倒退格式经常出现.
Java库:
Ngninx备注:
链接:
为什么是这样?
这是因为这是OpenSSL返回的内容.Apache HTTPD做同样的事情,因为它也使用OpenSSL.
哪一个与LDAP RFC匹配?
您描述为"标准订单"的那个.但是,这是SSL证书和SSL API.它与LDAP没有任何关系,没有理由说它应该符合任何LDAP RFC.这只是提供证书主题DN的另一种方式.这是由X.509定义的,而不是由LDAP定义的(尽管最终它们都是由X.500定义的,至少最初是由它定义的).
是否存在来回转换的Java库(从反向转换为非反转)
关闭主题,而不是我所知道的,但写起来很容易:
public class OpenSSLSubjectName
{
private String name;
public OpenSSLSubjectName(String name)
{
this.name = name;
}
public String getX500Name() throws NamingException
{
return getLdapName().toString();
}
public LdapName getLdapName() throws NamingException
{
List<Rdn> rdns = new LinkedList<>();
String[] parts = name.split("/");
for (int i = 1; i < parts.length; i++)
{
rdns.add(new Rdn(parts[i]));
}
return new LdapName(rdns);
}
}
Run Code Online (Sandbox Code Playgroud)
E&OE
| 归档时间: |
|
| 查看次数: |
1233 次 |
| 最近记录: |