Web Key Directory (WKD) con httpd y relayd
Por el 22 de Abril de 2022
Web Key Directory (WKD) ofrece una forma fácil de conseguir la llave pública OpenPGP para una determinada dirección de correo, distribuyendo esta llave a través de un servidor web.
Referencias
Configuración
Hay dos formas de configurar WKD: por el método directo o por el método avanzado. Explicaré el método directo porque es más sencillo y no requiere añadir registros de DNS.
Necesitas que estos dos ficheros sean accesibles a una petición HTTP:
- /policy que puede ser un archivo de 0 bytes
- /.well-known/wkdhash siendo wkdhash un hash generado por GnuPG
Como generar el hash WKD
$ gpg --with-wkd-hash -k hugh@example.com
pub rsa3072 2022-04-18 [SC] [caduca: 2024-04-17]
4K270DS497HD26C9073260238B0187DIAB6AL66
uid [ absoluta ] Hugh Doe <hugh@example.com>
c93f1e400f26708f98cb19d93662dsk2@example.com
sub rsa3072 2022-04-18 [E] [caduca: 2024-04-17]
En este caso el hash sería c93f1e400f26708f98cb19d93662dsk2. Exporto la clave pública con ese nombre de archivo:
$ gpg --export hugh@example.com > c93f1e400f26708f98cb19d93662dsk2
Ahora copio este archivo al directorio /hu/ de la web y también creo un archivo policy de 0 bytes que va al directorio raíz con el comando touch policy
.
Configuración de httpd
Esta es la configuración correspondiente en httpd.conf que iría dentro del bloque server
de la web en cuestión:
location "/.well-known/openpgpkey/hu/*" {
root "/htdocs/example.com"
request strip 2
}
Configuración de relayd
Como último paso necesitarás configurar la cabecera Access-Control-Allow-Origin
con valor *
para el directorio /hu/. No he encontrado la opción de establecer cabeceras para un directorio específico en relayd, por lo que lo he activado para todos los directorios, lo cual en mi caso no es un problema ya que sólo sirvo archivos estáticos que son públicos.
match response header set "Access-Control-Allow-Origin" value "*"
Como importar la llave desde GnuPG
Para comprobar que funciona usaré GnuPG:
$ gpg --locate-keys hugh@example.com
Si todo ha ido bien aparecerán los detalles de la clave importada.