systemd-sbsignsystemdsystemd-sbsign1systemd-sbsignSign PE binaries for EFI Secure Bootsystemd-sbsignOPTIONSCOMMANDDescriptionsystemd-sbsign can be used to sign PE binaries for EFI Secure Boot.CommandsSigns the given PE binary for EFI Secure Boot. Takes a path to a PE binary as its
argument. If the PE binary already has a certificate table, the new signature will be added to it.
Otherwise, a new certificate table will be created. The signed PE binary will be written to the path
specified with .OptionsThe following options are understood:Specifies the path where to write the signed PE binary or the data to be signed
offline when using the option.Set the Secure Boot private key and certificate for use with the
sign verb. The option takes a path to a
PEM-encoded X.509 certificate or a URI that's passed to the OpenSSL provider configured with
. The option takes one of
file or provider, with the latter being followed by a specific
provider identifier, separated with a colon, e.g. provider:pkcs11. The
option takes a path or a URI that will be passed to the OpenSSL
engine or provider, as specified by as a
type:name tuple, such as engine:pkcs11. The specified OpenSSL
signing engine or provider will be used to sign the PE binary.When this option is specified, the sign command writes the data
that should be signed to the path specified with instead of writing the
signed PE binary. This data can then be signed out of band after which the signature can be attached
to the PE binary using the and
options.Configure the signed data (as written to the path specified with
when using the option) and
corresponding signature for the sign command.ExamplesOffline EFI secure boot signing of a PE binaryThe following does offline secure boot signing of systemd-boot:SD_BOOT="$(find /usr/lib/systemd/boot/efi/ -name "systemd-boot*.efi" | head -n1)"
# Extract the data that should be signed offline.
/usr/lib/systemd/systemd-sbsign \
sign \
--certificate=secure-boot-certificate.pem \
--output=signed-data.bin \
--prepare-offline-signing \
"$SD_BOOT"
# Sign the data out-of-band. This step usually happens out-of-band on a separate system.
openssl dgst -sha256 -sign secure-boot-private-key.pem -out signed-data.sig signed-data.bin
# Attach the signed data and its signature to the systemd-boot PE binary.
/usr/lib/systemd/systemd-sbsign \
sign \
--certificate=secure-boot-certificate.pem \
--output="$SD_BOOT.signed" \
--signed-data=signed-data.bin \
--signed-data-signature=signed-data.sig \
"$SD_BOOT"See Alsobootctl1