Admin Libre - Administración de sistemas y redes

Web Key Directory (WKD) con httpd y relayd
Por Francisco Gaitán 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.

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org