Si bien puede firmar el software, esto no significa que pueda almacenar la clave pública necesaria para la validación de la firma en el dispositivo que debe realizar la verificación. El solo hecho de liberar la clave pública no lo hace mágicamente disponible en todos los lugares que necesitan hacer la verificación.
En el caso de SecureBoot, el sistema UEFI que necesita validar las firmas no es de código abierto. E incluso si fuera de código abierto, esto no significa que los sistemas vienen preinstalados con la clave que usó para firmar. En las implementaciones existentes, algunos proveedores le permiten almacenar sus propias claves para validación y otros no. Esto significa que cada usuario del software firmado debe deshabilitar SecureBoot o agregar la clave que usó para firmar, si es posible. Dado que ambas opciones son demasiado complejas para el usuario promedio, sería mucho mejor si se pudiera usar una de las claves ya conocidas por la implementación para la firma. Por supuesto, esto significa que necesita tener acceso a la clave privada relacionada.
La solución actual en Ubuntu es tener un shim pequeño firmado por alguien que tenga acceso a la clave privada necesaria (es decir, Microsoft) y luego iniciar el resto del sistema desde allí. Consulte Ubuntu Wiki: SecureBoot para obtener detalles técnicos.