Мне любопытно, почему некоторые веб-серверы (например, Nginx) предоставляют клиентское SSL DN в обратном порядке.
Веб-приложение отправляет DN в веб-службу Java, которая пытается создать Java javax.naming.ldap.LdapName.
Стандартный заказ (LDAP или X500Name):
"CN=Jimmy Blooptoop,OU=Someplace,OU=Employees,DC=Bloopsoft-Inc"
Обратный порядок (формат OpenSSL Oneline) (что Nginx возвращает как _$ssl_client_s_dn_):
"/DC=Bloopsoft-Inc/OU=Employees/OU=Someplace/CN=Jimmy Blooptoop"
Почему это?
Какой из них соответствует LDAP RFC?
Они оба?
Примечания к LDAP RFC:
Существует множество RFC, связанных с LDAP: https://www.ldap.com/ldap-specifications-defined-in-rfcs
Многие люди ссылаются на разные, вот попытка их краткой истории:
Июль 1993 г.: RFC 1485 — строковое представление различающихся именМарт 1995 г.: RFC 1779 — строковое представление отличительных имен- Декабрь 1997 г .: RFC 2253 - Облегченный протокол доступа к каталогам (v3): строковое представление отличительных имен UTF-8.
- Сентябрь 2002 г .: RFC 3377 - Облегченный протокол доступа к каталогам (v3): техническая спецификация (обновление RFC 2253)
Март 2003 г.: RFC 3494 — Облегченный протокол доступа к каталогам версии 2 (LDAPv2) до исторического статуса (упразднение RFC 1485, RFC 1779)- Июнь 2006 г.: RFC 4514 – Облегченный протокол доступа к каталогам (LDAP): строковое представление отличительных имен
Самый последний, который устарел от других: RFC 4514: облегченный протокол доступа к каталогам (LDAP): строковое представление Выдающиеся имена
Библиотека Java:
Есть ли библиотека Java для преобразования туда и обратно (с обратного на необратное)? LdapName создает исключение InvalidNameException. Вроде должно быть, часто появляется обратный формат.
Библиотеки Java:
- javax.naming.ldap.LdapName Поддерживает RFC 2253
- org.apache.directory.api.ldap.model.filter.FilterEncoder Поддерживает RFC 4514
- Spring LdapUtils Обертывает LdapName
- Статья об использовании BouncyCastle X509Name для разбора и сравнения DN: http://www.sivachandran.in/2012/11/comparing-x509-distinguished-name-with.html
Примечания Ngninx:
Связывание:
- Как извлечь CN из X509Certificate в Java?
- Синтаксический анализ CN из DN сертификата (пример заимствованного DN от)
- Информация о Nginx
- X500Principal Distinguished Name order
- https://wiki.nikhef.nl/grid/How_to_handle_OpenSSL_and_not_get_hurt_background_information
- https://www.openssl.org/docs/manmaster/apps/x509.html#item_oneline