2010-10-31 8 views
7

У меня есть пара ключей pgp public/private (RSA), которым доверяют мои друзья. У меня есть веб-сервер, и я хотел бы сгенерировать сертификат ssl, открытый ключ которого соответствует моему публичному ключу pgp.Можно ли создать сертификат ssl из открытого/закрытого ключа pgp?

В чем смысл? это возможно ? это безопасно?

+0

Для чего вам это нужно? Физически это будет тот же самый ключ, но вы не будете использовать его. –

+0

Хотя оба являются формой криптографии с открытым ключом, они разные. См. Http://forums.comodo.com/digital-certificates-encryption-and-digital-signing/what-is-the-difference-between-ssl-public-key-and-pgp-public-key-t21909.0 .html – Eugene

+0

Да, понимал, что они служат различным целям (упаковка и предполагаемое использование). Вопрос, однако, в том, можно ли использовать один и тот же открытый ключ для обоих случаев. –

ответ

7

Если формат ключа в вашем ключе PGP также поддерживается в формате X.509, это возможно. RSA является одним из них.

Вот Java implementation, который превращает сертификат PGP в самоподписанный сертификат X.509, используя BouncyCastle (Перед загрузкой вам необходимо загрузить поставщика безопасности BouncyCastle).

Обратите внимание, что то, что большинство людей называют в PGP с открытым ключом фактически СЕРТИФИКАТ в PGP. Самым открытым ключом является ключ RSA (или другой формат), который содержится в этих сертификатах. Следовательно, можно взять ключевой материал и использовать его в другом. Однако при этом вы теряете информацию, которая делает сертификат PGP сертификатом: привязка ключа к идентификатору и подписей, добавленных другими (после модели PGP).

Возможно, вы можете добавить дополнительную информацию о сертификате PGP в свое собственное расширение в сертификате X.509.

Имеет ли смысл делать это, вероятно, зависит от того, чего вы хотите достичь. Повторное использование одного и того же ключевого материала более или менее подразумевает, что «вы» (идентификатор за сертификатом PGP) и ваш веб-сервер становятся одним и тем же, поскольку, если один закрытый ключ взломан, так же как и другой (Apache Httpd, например, требует, чтобы секретный ключ не защищался паролем, когда он хранится на сервере, хотя он часто доступен только пользователю root). Кроме того, это, вероятно, не поможет вашим посетителям, которые посещают веб-сайт, если они не захотят копаться в предупреждающем окне «неизвестный сертификат», чтобы проверить, что открытый ключ соответствует вашим (что они могут знать).

+0

Это был ответ, который я искал bruno! он подтверждает то, что я имел в виду, и выявляет разницу между сертификатами и удостоверением личности. благодаря! –

+0

Если вы создаете один ключ RSA, который ваш сервер использует в качестве сертификата X.509, и вы используете свой персональный ключ PGP для подписывания своего ключа сервера, показывая, что вы доверяете своему собственному серверу, тогда не следует доверять веб-сайтам своим друзьям доверять своему серверу?Я считаю, что это более или менее то, как работает обезьяна (упомянутая http://stackoverflow.com/a/7629599/69663). – unhammer

+1

@unhammer, вам нужен способ представить его. Браузеры используют только сертификаты X.509. (Существует спецификация для использования сертификатов OpenPGP с TLS напрямую, но есть очень мало реализаций.) Это никогда не только ключ, который вы подписываете, а связывание между идентификатором и ключом. Было бы нецелесообразно подписывать ключ независимо от идентификатора сервера и других атрибутов, что фактически было бы отдельным сертификатом. К сожалению, есть и другие проблемы с моделью WoT: модели могут быстро стать очень сложными. – Bruno

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