How can I use letsencrypt to get a signed public key for use with OpenPGP? So I can prove in court the key is mine etc., and not have to rely on the OpenPGP web of trust.

  • the closest you're likely to find to this is either keybase.io (key tied to social media identities and/or ownership of a website) or S/MIME certificates which are issued by a CA Jan 23, 2016 at 17:55

1 Answer 1


How can I use letsencrypt to get a signed public key for use with OpenPGP?

This is not possible for several reasons.

letsencrypt does not Verify Idenitity

So I can prove in court the key is mine [...]

letsencrypt only verifies domain ownership, with other words whether you have control over the domain. They do not verify any personal information.

Server and Client Certificates

OpenPGP does not really know the concept of server certificates, at least not in a standardized way. At the same time, letsencrypt only issues server certificates. They cannot validate user IDs.

X.509 and OpenPGP are not Compatible

letsencrypt issues X.509 certificates, as used for HTTPs. While both make use of the same cryptographic algorithms, neither the X.509 key format is comptaible with the OpenPGP key format, nor are their signatures (certifications). The problem already starts with how the entities identifying keys (in both cases: fingerprints) are calculated.

While it is well possible to extract the RSA keys (with other words, the numbers used as input for the algorithms), the same RSA keys would have different incompatible representations and formats.

Trust Systems and Certification Authorities

X.509 and OpenPGP have different trust systems. X.509 has a hierarchical approach, with a (some people say too large) set of trusted root certification authorities (recursively) signing both other certification authorities and individuals. The result forms a kind of trust tree.

OpenPGP uses another structure, the more general graph ("web of trust"). There is no central trust instance but your own key, and you have to verify and trust other's keys before. You can somewhat compare this to manually choose, installing and trusting the root certificates into your system's (browser's) trust store before being able to verify any certificates.

[...] and not have to rely on the OpenPGP web of trust.

You can very well map the hierarchical trust system into OpenPGP, and there indeed are certification authorities in the OpenPGP world: CAcert also signs OpenPGP keys, the German Heise Verlag does so in their "Krypto-Kampagne" (German website), and also in Germany you can get your key signed using the electronic features of the German identity card (German website).

This means still relying on the OpenPGP web of trust, but using certification authorities to "bootstrap trust". For example, everybody trusting CAcert will be able to verify your key based on their signature, without any further "web of trust work" to be performed.

  • Thanks for the referral to CAcert. But why can't I just get a cert from letsencrypt, extract the keypair, and use it as my pubkey? Then I can prove it's my key by referring people to letsencrypt. Jan 17, 2016 at 21:32
  • As I already described, you have to distinguish between the math behind (mostly RSA) and the protocols adding up trust systems (X.509, OpenPGP). You can (in theory, I don't know how the tool support is) export the RSA keys and create an OpenPGP key packet from those. But still, you cannot "convert" the X.509 certifications. People would have to extract the RSA primes and compare them manually. From a cryptographic point of view, there are keys that are the same in X.509 and OpenPGP. From a trust system point of view, they are not compatible.
    – Jens Erat
    Jan 17, 2016 at 21:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .