2010-10-31 10 views
7

Ich habe ein PGP Public/Private (RSA) Schlüsselpaar, das meine Freunde vertrauen. Ich habe einen Webserver ausgeführt und ich möchte ein SSL-Zertifikat generieren, deren öffentlicher Schlüssel mit meinem öffentlichen PGP-Schlüssel übereinstimmt.ist es möglich, ein SSL-Zertifikat aus einem öffentlichen/privaten PGP-Schlüssel zu erstellen?

macht das irgendeinen Sinn? ist das möglich ? ist das sicher?

+0

Für was brauchen Sie das? Physikalisch wird es derselbe Schlüssel sein, aber Sie werden davon keinen Gebrauch machen. –

+0

Obwohl beide eine Form der Public-Key-Kryptographie sind, sind sie unterschiedlich. Siehe 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

Ja, verstanden, dass sie unterschiedlichen Zwecken dienen (Verpackung und Verwendungszweck). Die Frage ist jedoch, ob Sie für beide Fälle den gleichen öffentlichen Schlüssel verwenden können. –

Antwort

7

Wenn das Schlüsselformat in Ihrem PGP-Schlüssel auch im X.509-Format unterstützt wird, ist es möglich. RSA ist einer von ihnen.

Hier ist ein Java implementation, der ein PGP-Zertifikat in ein selbstsigniertes X.509-Zertifikat umwandelt (BouncyCastle) (Sie müssen den BouncyCastle-Sicherheitsanbieter laden, bevor Sie ihn laden).

Beachten Sie, dass, was die meisten Leute nennen einen öffentlichen PGP-Schlüssel in der Tat ist ein PGP Zertifikat. Der öffentliche Schlüssel selbst ist der RSA-Schlüssel (oder ein anderes Format), der in diesen Zertifikaten enthalten ist. Daher ist es möglich, das Schlüsselmaterial zu nehmen und es in dem anderen zu verwenden. Dadurch verlieren Sie jedoch die Informationen, die das PGP-Zertifikat zu einem Zertifikat machen: die Bindung des Schlüssels an eine Identität und die von anderen hinzugefügten Signaturen (nach dem PGP-Modell).

Sie könnten möglicherweise die zusätzlichen Informationen des PGP-Zertifikats möglicherweise in Ihre eigene Erweiterung im X.509-Zertifikat einfügen.

Ob dies sinnvoll ist, hängt wahrscheinlich davon ab, was Sie erreichen möchten. Wenn dasselbe Schlüsselmaterial mehr oder weniger wiederverwendet wird, bedeutet dies, dass "Sie" (ID hinter dem PGP-Zertifikat) und Ihr Webserver ein und dasselbe sind, da, wenn ein privater Schlüssel kompromittiert wird, auch der andere (Apache Httpd) erfordert, dass der private Schlüssel nicht passwortgeschützt ist, wenn er auf dem Server gespeichert ist, obwohl er oft nur für den Benutzer root zugänglich ist). Darüber hinaus wird dies wahrscheinlich nicht viel helfen Ihre Besucher, die die Website besuchen werden, es sei denn, sie möchten innerhalb der "unbekanntes Zertifikat" Warnfeld zu überprüfen, den öffentlichen Schlüssel zu Ihrem passt (was sie wissen können).

+0

das war die Antwort, die ich für Bruno suchte! es bestätigt, was ich vorhatte und bringt den Unterschied zwischen Zertifikaten und Identität zum Vorschein. Vielen Dank! –

+0

Wenn Sie einen RSA-Schlüssel erstellen, den Ihr Server als X.509-Zertifikat verwendet, und Sie verwenden Ihren persönlichen PGP-Schlüssel, um Ihren Serverschlüssel zu signieren, dass Sie Ihrem eigenen Server vertrauen, dann sollten Sie nicht das Web of Trust Ihren Freunden überlassen Vertrauen Sie Ihrem Server?Ich glaube das ist mehr oder weniger wie Affensphere (erwähnt von http://stackoverflow.com/a/7629599/69663) funktioniert. – unhammer

+1

@unhammer, Sie brauchen eine Möglichkeit, es zu präsentieren. Browser verwenden nur X.509-Zertifikate. (Es gibt eine Spezifikation für die direkte Verwendung von OpenPGP-Zertifikaten mit TLS, aber es gibt nur sehr wenige Implementierungen.) Es ist nie nur der Schlüssel, den Sie signieren, sondern die Bindung zwischen der Identität und dem Schlüssel. Es würde keinen Sinn machen, den Schlüssel unabhängig von der Identität des Servers und anderen Attributen zu signieren, was effektiv ein eindeutiges Zertifikat wäre. Es gibt leider noch andere Probleme mit dem WoT-Modell: Die Modelle können schnell sehr komplex werden. – Bruno