2010-10-31 148 views
7

我有一個朋友們信任的pgp public/private(RSA)密鑰對。我有一個網絡服務器運行,我想生成一個公鑰與我的pgp公鑰匹配的ssl證書。是否可以使用pgp公鑰/私鑰創建一個ssl證書?

這是否有任何意義?那可能嗎 ?那是安全的嗎?

+0

你需要什麼緣故?從身體上看,它將是同一個關鍵,但你不會使用它。 – 2010-11-12 17:34:29

+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 2010-10-31 00:59:05

+0

是的,理解它們有不同的用途(包裝和預期用途)。但是,問題是您是否可以在兩種情況下使用相同的公鑰。 – 2010-10-31 17:02:00

回答

7

如果您的PGP密鑰中的密鑰格式也支持X.509格式,那麼這是可能的。 RSA就是其中之一。

這是一個Java implementation,使用BouncyCastle(您需要在加載之前加載BouncyCastle安全提供程序)將PGP證書變成自簽名的X.509證書。

請注意,大多數人所說的PGP公鑰實際上是一個PGP證書。公鑰本身就是這些證書中包含的RSA密鑰(或其他格式)。因此可以採用關鍵材料並將其用於另一個關鍵材料。 但是,通過這樣做,您將失去使PGP證書成爲證書的信息:密鑰與身份的綁定以及其他人添加的簽名(遵循PGP模型)。

您可能會將PGP證書的額外信息放入X.509證書的擴展中。

這樣做是否合理取決於你想達到的目標。重新使用相同的密鑰材料或多或少意味着「你」(PGP證書背後的ID)和你的網絡服務器變得完全相同,因爲如果一個私鑰被泄露,另一個私鑰也被泄露(例如Apache Httpd,要求私鑰在存儲在服務器上時不被密碼保護,儘管它通常只能由root用戶訪問)。 此外,這可能不會幫助您訪問網站的訪問者,除非他們想在「未知證書」警告框中檢查公鑰與您的(他們可能知道)匹配。

+0

那是我尋找布魯諾的答案!它證實了我的想法,並提出了證書和身份之間的區別。謝謝! – 2010-11-01 15:58:21

+0

如果您創建一個服務器用作其X.509證書的RSA密鑰,並且您使用個人PGP密鑰對服務器密鑰進行簽名,表明您信任自己的服務器,那麼不應該讓信任網絡讓您的朋友相信你的服務器?我相信這或多或少是如何運行monkeysphere(由http://stackoverflow.com/a/7629599/69663提到的)。 – unhammer 2012-10-16 10:34:54

+1

@unhammer,你需要一種方式來呈現它。瀏覽器只使用X.509證書。 (有直接使用TLS使用OpenPGP證書的規範,但實現很少。)它不只是您簽署的密鑰,而且是身份和密鑰之間的綁定。簽署獨立於服務器身份和其他屬性的密鑰是沒有意義的,這實際上是一個獨特的證書。遺憾的是,WoT模型存在其他問題:模型可能很快變得非常複雜。 – Bruno 2012-10-16 10:49:01