2015-01-21 7 views
0

Мне нужно закрепить документ, используя открытый ключ клиента. Я могу получить сертификат клиента на своем веб-сайте. Мой вопрос: как мое приложение должно получить доступ к этому сертификату?Сертификат клиента X.509

  • Должен ли я получить его со своего веб-сайта каждый раз, когда это требуется?
  • Или я должен загрузить его и хранить его:
    • в моем KeyStore
    • Или просто как файл локально

Также нужно проверить этот сертификат и использовать CRL. Мое приложение использует последние версии Spring.

Благодаря

+0

Вам нужно использовать закрытый ключ для подписи. – zakjan

+0

Обновлен вопрос. Это необходимо для шифрования. – adi

ответ

1

Вы должны загрузить сертификат каждый раз (если он доступен). Но вам также нужно каждый раз проверять сертификат и выполнять полную проверку цепи Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (на странице 71, глава 6: Проверка пути сертификации), включая CRL и/или OCSP.

Если вы не загрузили сертификат, как вы узнали, что он изменился? Сертификаты не только меняются, если они истекли.

Используйте гибридную схему шифрования для шифрования документов.

Update:

Можете ли вы сказать, что вы имеете в виду под «Сертификаты не только изменения, если они просрочены.»? Что еще может измениться и как это важно?

Я имею в виду, что вам нужно проверять сертификат каждый раз, когда вы обращаетесь к этой службе. Быстрое и грязное решение заключается в том, чтобы загрузить сертификат один раз, посмотреть дату истечения срока действия и только повторно проверить сертификат, если дата истечения срока прошла. Но это будет разрушительно для системы открытых ключевых инфраструктур. Идея состоит в том, чтобы проверять сертификат каждый раз, когда вы обращаетесь к какой-либо службе. Сертификаты могут меняться до истечения срока их действия, и это может быть причиной.

См предоставленной ссылка RFC 5280 on page 69 по ряду причин:

CRLReason ::= ENUMERATED { 
    unspecified    (0), 
    keyCompromise   (1), 
    cACompromise   (2), 
    affiliationChanged  (3), 
    superseded    (4), 
    cessationOfOperation (5), 
    certificateHold   (6), 
     -- value 7 is not used 
    removeFromCRL   (8), 
    privilegeWithdrawn  (9), 
    aACompromise   (10) } 
+0

Спасибо за ответ. Можете ли вы предоставить ссылку на то, как это сделать? валидация и полная проверка chani? – adi

+0

Добавлена ​​ссылка на RFC – Manuel

+0

Можете ли вы рассказать, что вы подразумеваете под «Сертификаты не только меняются, если они истекли»? Что еще может измениться и как это важно? – adi