[ipxe-devel] HTTPS notes
Geert Stappers
stappers at stappers.nl
Fri Jan 5 18:50:25 UTC 2024
Hi,
On the iPXE IRC channel came some HTTPS notes along.
To prevent that they are lost after the paste bin expire date,
do I post them here. Mailinglist archive will preserve them.
Enjoy
[...]
Prepare Source
--------------
Requirements:
```sh
sudo apt-get build-essential liblzma-dev git
```
Clone repository:
```sh
git clone https://github.com/ipxe/ipxe.git
cd ipxe/src/
# NOTE: ^ Remaining commands are executed from this directory
```
Basic configuration:
```sh
cat >config/local/general.h <<EOF
#define DOWNLOAD_PROTO_HTTPS
EOF
cat >provision.ipxe <<EOF
#!ipxe
echo Attempting DHCP ...
:retry
dhcp || goto retry
echo Contacting Server ...
:chain
chain --autofree http://boot.netboot.xyz/ipxe/netboot.xyz.efi || goto failed
exit
:failed
echo Provisioning Failed
sleep 9000000
goto chain
EOF
```
Certificates
------------
The default build may require updated certificates in order to continue trusting
most valid certificates. Depending on final deployment, this may not be needed.
```sh
curl -s http://ca.ipxe.org/ca.crt > ca.pem
curl -s https://letsencrypt.org/certs/isrgrootx1.pem > isrgrootx1.pem
curl -s https://letsencrypt.org/certs/lets-encrypt-r3.pem > lets-encrypt-r3.pem
# Make Options
CERT=ca.pem,isrgrootx1.pem,lets-encrypt-r3.pem TRUST=ca.pem,isrgrootx1.pem,lets-encrypt-r3.pem
DEBUG=tls,httpcore,x509,certstore
```
The current deployment solution sits alongside the package update service. The
certificate (.crt) for this server can be copied to the ``ipxe/src/`` directory
and then included using ``CERT=server.crt TRUST=server.crt``.
Create Image
-----------
Build:
```sh
make -j8 bin-x86_64-efi/ipxe.efi EMBED=provision.ipxe \
CERT=server.crt TRUST=server.crt
```
Publish:
```sh
mv bin-x86_64-efi/ipxe.efi [...]/salt/states/ipxe/provision.efi
```
Actual commands used for current image:
```sh
git pull
cat >provision.ipxe [...]
cat >config/local/general.h [...]
cp /.../deb.crt server.crt
make -j8 bin-x86_64-efi/ipxe.efi EMBED=provision.ipxe CERT=server.crt TRUST=server.crt
cp bin-x86_64-efi/ipxe.efi [...]/salt/states/wipe/provision.efi
```
More information about the ipxe-devel
mailing list