2014-02-24 6 views
0

Я разрабатываю веб-приложение, которое использует апплеты, подписанные сертификатом, выпущенным CA клиента. Этот сертификат содержит URL-адрес точки распространения CRL, которая не определяет хост и порт. Атрибуты сертификата «Точки распространения CRL» и «Доступ к информации о полномочиях» содержат URL-адрес, похожий на «ldap: /// CN = my-cn ...».Сертификат апплета CRL Точка распространения URL-адрес LDAP без хоста

Файлы журнала, созданные API проверки отзыва сертификатов (C: \ Users [my_user] \ AppData \ LocalLow \ Sun \ Java \ Deployment \ log), указывают, что используются значения "localhost" и "389" для хоста и порта. Это фрагмент файла журнала:

... 
certpath: DistributionPointFetcher.getCRLs: Checking CRLDPs for CN=xxx, O=yyy, L=zzz, C=PT 
certpath: Trying to fetch CRL from DP ldap:///CN=_my-cn_?certificateRevocationList?base?objectClass=cRLDistributionPoint 
certpath: CertStore URI:ldap:///CN=_my-cn_?certificateRevocationList?base?objectClass=cRLDistributionPoint 
... 
network: Connecting http://localhost:389/ with proxy=DIRECT 
... 
certpath: LDAPCertStore.engineInit about to throw InvalidAlgorithmParameterException 
javax.naming.CommunicationException: localhost:389 [Root exception is java.net.ConnectException: Connection refused: connect] 
    at com.sun.jndi.ldap.Connection.<init>(Unknown Source) 
... 

Может кто-нибудь подтвердить, что хозяин является обязательным, в противном случае значение по умолчанию «локальный» используется?

Я прочитал в LDAP RFC (http://www.ietf.org/rfc/rfc4516.txt), что если поле «хозяин» отсутствует, клиент должен иметь некоторые априорные знания о соответствующем LDAP-сервере для связи. Можно ли настроить атрибут «хозяин»?

Я использую версию JRE 1.7.0_45 (сборка 1.7.0_45-b18).

Спасибо, Тельмо Симойнш

ответ

0

Да, хозяин является обязательным.

Это зависит немного от того, как (если) ваш код создает объект LDAPCertStore. Когда вы вызываете конструктор, вам нужно передать объект LDAPCertStoreParameters. Этот класс содержит конструктор, который позволяет указать хост (и порт).

Попробуйте создать свой LDAPCertStore так:

LDAPCertStoreParameters params = new LDAPCertStoreParameters("hostname", 389); 
CertStore store = CertStore.getInstance("LDAP", params); 

удачи.