2013-12-12 6 views
3

Я использую SCEP для создания сертификатов для своего веб-сервиса. После успешного создания сертификата и запуска сервера я пытаюсь получить доступ к wsdl через браузер, в котором отображается сообщение об ошибке, в котором говорится, что тип сертификата не разрешен для этого приложения, код ошибки: sec_error_inadequate_cer_type. Один коллега отметил, что мне нужно изменить использование ключа в расширенных ключевых атрибутах на «аутентификацию сервера» и что это должно быть сделано в запросе на сертификацию.SCEP и атрибуты расширенного сертификата

Чтобы создать новый запрос, я использую bouncycastle. Смотрите фрагмент кода ниже:

PKCS10CertificationRequestBuilder builder = new PKCS10CertificationRequestBuilder(subject, pkInfo); 
    builder.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_challengePassword, new DERPrintableString(challengePassword)); 

    return builder.build(signer); 

Проблема заключается в том, что в настоящее время я не нашел никаких документов о том, как добавить что-то вроде этого на запрос. Единственное, что я понял, что, скорее всего, я должен добавить другой атрибут строителю с идентификатором объекта «PKCSObjectIdentifiers.pkcs_9_at_extendedCertificateAttributes»:

builder.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_extendedCertificateAttributes, ???); 

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

Я провел некоторое исследование, но я не нашел никакой документации или примеров, которые предоставили мне некоторые полезные ответы.

Некоторая информация: Я использую JSCEP и BouncyCastle 1,48

Я надеюсь, что кто-то может мне точку в решении. Спасибо заранее.

ответ

0

Расширенная сертификат атрибут является устаревшим, но есть еще один PKCS # 9 атрибут называется Extension request, который может содержит некоторое расширение абонент хочет быть включены в сертификат.

extensionRequest типа атрибут может быть использован для передачи информации о расширениях сертификатов запрашивающие желают быть включены в сертификате .

Конечно, Центр сертификации должен поддерживать этот атрибут и может игнорировать его в зависимости от его политики сертификации.

Чтобы включить этот атрибут в вашей CSR вы можете использовать этот код (не проверено):

KeyUsage ku = new KeyUsage(KeyUsage.digitalSignature); 
Extension kuExt = new Extension(Extension.keyUsage, true, ku.getEncoded()); 
ExtendedKeyUsage eku = new ExtendedKeyUsage(KeyPurposeId.id_kp_serverAuth); 
Extension ekuExt = new Extension(Extension.extendedKeyUsage, true, eku.getEncoded()); 
Extensions exts = new Extensions(new Extension[] {kuExt, ekuExt}); 
builder.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, exts); 
+0

Спасибо очень много. Это сделало мой день. Btw. Извините за поздний ответ, я был в отпуске, поэтому сегодня первый день я могу проверить. – vik

Смежные вопросы