:computer: :lock: :key: Secure Boot key manager
sbctl intends to be a user-friendly secure boot key manager capable of setting up secure boot, offer key management capabilities, and keep track of files that needs to be signed in the boot chain.
It is written top-to-bottom in Golang using go-uefi for the API layer and doesn't rely on existing secure boot tooling. It also tries to sport some integration testing towards tianocore utilizing vmtest.
lsblk)objcopy)To fetch, build and install sbctl from the Github source:
$ go install github.com/foxboron/sbctl/cmd/sbctl@latest
$ $(go env GOPATH)/bin/sbctlTo install through git:
$ git clone https://github.com/foxboron/sbctl.git
$ cd sbctl
$ make
$ ./sbctlFor Arch Linux:
# pacman -S sbctlFor Alpine Linux:
# apk add sbctlFor Gentoo Linux:
# emerge --ask app-crypt/sbctlFor openSUSE:
# zypper install sbctlFor Fedora Linux (unofficial package):
# dnf copr enable chenxiaolong/sbctl
# dnf install sbctlYou can find a updated list of sbctl packages on Repology.
In addition, sbctl is also available for Ubuntu
(unofficial).
Follow the Expert Download links to find installation instructions according
to your operating system.
Development discussions and support happens in #sbctl on the libera.chat IRC network.
…See example enrollment for a workflow with screenshots of real firmware setup menus.
……Note: It is generally recommended to use the initramfs generator for this.
mkinitcpio and dracut support this through their respective --uki and
--uefi flags, or the ukify tool from systemd.
This feature is considered a second class citizen in sbctl.
…To create a signing key with a yubikey, use the --keytype yubikey flag with the create-key command. For example:
…The command will create a RSA4096 key in the Yubikey's PIV Signature Slot. sbctl will then use the key for signing the UKI. To specify the PIN for the Yubikey, use the SBCTL_YUBIKEY_PIN environment variable:
$ SBCTL_YUBIKEY_PIN=123123 sbctl create-keys --keytype yubikeyRemember to specify the SBCTL_YUBIKEY_PIN when signing the UKI or performing operations that will trigger the sbctl hooks (like mkinitcpio).
No open issues yet, or sync has not completed.