Вы должны загрузить сертификат каждый раз (если он доступен). Но вам также нужно каждый раз проверять сертификат и выполнять полную проверку цепи 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) }
Вам нужно использовать закрытый ключ для подписи. – zakjan
Обновлен вопрос. Это необходимо для шифрования. – adi