• Home
  • Tags
  • RSS
  • About
  • TIL: OpenPGP Web Key Directory

    Timestamp:
    Tags: til

    Today I was looking for a way on how to best publish my OpenPGP key on my webserver. Surely, somebody came up with some sort of standard way for where to place that key, right? Turns out, they did: https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/

    The TLDR summary is, that my key can now be found here:

    https://mister-muffin.de/.well-known/openpgpkey/hu/8yxgr5jjfok88r9um56kb44x9h4dyj7f

    Or be downloadable by just running:

    $ gpg --locate-key josch@mister-muffin.de
    

    Where does the hash come from? It’s the local part of my email (josch) hashed with sha1 and encoded in z-base32. That computation can be done by gpg:

    $ gpg --with-wkd-hash -k josch@mister-muffin.de | grep mister-muffin.de
    [...]
    8yxgr5jjfok88r9um56kb44x9h4dyj7f@mister-muffin.de
    

    I exported the key that I put there using the following command:

    $ gpg --no-options --export --export-options export-minimal,export-clean \
        --export-filter keep-uid="uid = Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>" \
        F83356BBE112B7462A41552F7D5D8C60CF4D3EB4
    

    There is a handy validator for such setups that can be found here: https://www.webkeydirectory.com

    I had an interesting debugging experience when I tried to verify my setup in a fresh Debian chroot because I got this error message when I ran above command:

    gpg: directory '/root/.gnupg' created
    gpg: keybox '/root/.gnupg/pubring.kbx' created
    gpg: /root/.gnupg/trustdb.gpg: trustdb created
    gpg: error retrieving 'josch@mister-muffin.de' via WKD: General error
    gpg: error reading key: General error
    

    That’s not very descriptive… Turns out, that I was missing the ca-certificates package. After installing it, everything worked as expected:

    $ gpg --locate-key josch@mister-muffin.de
    gpg: key 7D5D8C60CF4D3EB4: public key "Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>" imported
    gpg: Total number processed: 1
    gpg:               imported: 1
    pub   rsa4096 2013-07-04 [SC]
          F83356BBE112B7462A41552F7D5D8C60CF4D3EB4
    uid           [ unknown] Johannes Schauer Marin Rodrigues <josch@mister-muffin.de>
    sub   rsa4096 2013-07-04 [E]
    sub   rsa4096 2013-07-04 [S]
    sub   rsa4096 2023-07-08 [S]