Вы можете сделать это, но это не обязательно хорошая практика.
Во-первых, когда вы говорите «сертификат SSL», вы, вероятно, имеете в виду «сертификат X.509». SSL/TLS в большинстве случаев использует сертификаты X.509, но также может использовать сертификаты OpenPGP (насколько мне известно, их поддерживает только GnuTLS).
Обратите внимание, что я также использую выражение «сертификат OpenPGP». Большинство людей называют их «открытыми ключами PGP», но на самом деле они являются сертификатами: они представляют собой комбинацию открытого ключа, идентификатора и некоторых атрибутов, подписанных другими объектами, которые присоединяют к нему свою подпись, чтобы сформировать общий сертификат. Строго говоря, это не просто открытый ключ.
Основное различие между сертификатом X.509 и сертификатом PGP заключается в том, что X.509 может иметь только одну подпись (подпись издателя), тогда как в сертификат PGP можно добавить несколько подписей. (Модель PGP можно использовать для иерархической модели, подобной PKI, тогда как модель PKI нельзя использовать для работы с моделью Web-of-Trust.)
Этот код Java демонстрирует, как "преобразовать" набор ключей PGP в самозаверяющий сертификат X.509. В принципе, вы также можете превратить его в CSR, чтобы получить сертификат X.509 от CA. Другое дело, хорошая ли это идея.
Во-первых, рекомендуется время от времени повторно генерировать новые пары ключей. Как правило, это одна из причин, по которой сертификаты X.509, используемые для SSL, имеют дату окончания срока действия (подписи PGP также могут быть ограничены по времени).
Вы также эффективно положите все яйца в одну корзину. Если один из ключей будет скомпрометирован, ваши сертификаты X.509 и PGP будут скомпрометированы.
Что еще более важно, повторное использование одних и тех же ключей для подписи и шифрования считается плохой практикой: их использование для двух разных приложений (SSL/TLS и GnuPG) только усугубит проблему.
person
Bruno
schedule
07.03.2012