46

Proxmox VE 添加 TPM 2.0 支持

 3 years ago
source link: https://azhuge233.com/proxmox-ve-%e6%b7%bb%e5%8a%a0-tpm-2-0-%e6%94%af%e6%8c%81/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Proxmox VE 添加 TPM 2.0 支持
This website uses cookies to improve your experience. 本站使用 Cookies 以提升您的用户体验。 Learn More
Skip to content

文章目录 显示

Windows 11 硬性要求 TPM 2.0,虽然现在看来可以通过各种手段绕过这个限制,但真正开启 TPM 2.0 才是最保险的方式

我的 Proxmox VE(PVE) 运行在 X99 主板上,CPU 为 5820k,主板上没有插 TPM 模块,需要软件模拟 TPM,下文使用 swtpm (libtpms 的一种实现) 来模拟 TPM

PVE 底层是 QEMU KVM,所以 QEMU 同理可用

另:PVE 官方已经计划在 PVE 中添加 vTPM(详见 vTPM support – do we have guide to add the vTPM support?),但是官方回应尚停留在今年 1 月

下文将展示如何在 Proxmox VE(PVE) 下为虚拟机开启 TPM 2.0

  • Proxmox VE 5.4.114-1
    • 基于 Debian 10、QEMU KVM

以下指令均在 root 用户下执行,其他用户请酌情添加 sudo

编译环境为 Debian,以下指令也适用于 Ubuntu,其他操作系统可以查看前两个参考链接

编译安装 libtpms

因为 swtpm 是 libtpms 的实现(依赖于 libtpms),所以需要先安装 libtpms

git clone https://github.com/stefanberger/libtpms.git
git clone https://github.com/stefanberger/libtpms.git

安装依赖环境

apt -y install automake autoconf libtool gcc build-essential libssl-dev dh-exec pkg-config dh-autoreconf gawk
apt -y install automake autoconf libtool gcc build-essential libssl-dev dh-exec pkg-config dh-autoreconf gawk

编译 libtpms

cd libtpms
./autogen.sh --with-openssl
make dist
dpkg-buildpackage -us -uc -j4
cd libtpms
./autogen.sh --with-openssl
make dist
dpkg-buildpackage -us -uc -j4
dpkg -i libtpms0_*_amd64.deb libtpms-dev_*_amd64.deb
cd ..
dpkg -i libtpms0_*_amd64.deb libtpms-dev_*_amd64.deb

Proxmox VE 添加 TPM 2.0 支持

编译安装 swtpm

git clone https://github.com/stefanberger/swtpm.git
git clone https://github.com/stefanberger/swtpm.git

安装依赖环境

apt -y install libfuse-dev libglib2.0-dev libgmp-dev expect libtasn1-dev socat tpm-tools python3-twisted gnutls-dev gnutls-bin libjson-glib-dev python3-setuptools softhsm2 libseccomp-dev
apt -y install  libfuse-dev libglib2.0-dev libgmp-dev expect libtasn1-dev socat tpm-tools python3-twisted gnutls-dev gnutls-bin  libjson-glib-dev python3-setuptools softhsm2 libseccomp-dev
cd swtpm
dpkg-buildpackage -us -uc -j$(nproc)
cd swtpm
dpkg-buildpackage -us -uc -j$(nproc)
dpkg -i ./swtpm*.deb
cd ..
dpkg -i ./swtpm*.deb

配置 swtpm 服务

/etc/systemd/system 下新建服务文件 swtpm.service,写入以下内容

[Unit]
Description=swtpm server
[Service]
Type=simple
ExecStartPre=mkdir -p /var/lib/qemu-swtpm/swtpm
ExecStart=swtpm socket --tpm2 --tpmstate dir=/var/lib/qemu-swtpm/swtpm --ctrl type=unixio,path=/var/run/qemu-server/swtpm.sock --log level=20
Restart=always
[Install]
WantedBy=multi-user.target
[Unit]
Description=swtpm server

[Service]
Type=simple
ExecStartPre=mkdir -p /var/lib/qemu-swtpm/swtpm
ExecStart=swtpm socket --tpm2 --tpmstate dir=/var/lib/qemu-swtpm/swtpm --ctrl type=unixio,path=/var/run/qemu-server/swtpm.sock --log level=20
Restart=always

[Install]
WantedBy=multi-user.target

以上服务配置用来开启 TPM 2.0,开启其他版本需要更改 –tpm2 参数为对应版本参数

注意:此服务模拟了单个 TPM 设备,只能供一个虚拟机使用,多个虚拟机无法使用同一个模拟 TPM。如有多个虚拟机 TPM 需求,则按以上配置新建多个 swtpm 服务即可(将 swtpm 改为其他名称,例如:/var/lib/qemu-swtpm/swtpm2,/var/run/qemu-server/swtpm2.sock )

systemctl start swtpm.service
systemctl status swtpm.service
# 开机启动
systemctl enable swtpm.service
systemctl start swtpm.service
systemctl status swtpm.service
# 开机启动
systemctl enable swtpm.service

客户机开启 TPM 2.0

进入 /etc/pve/qemu-server 目录,编辑待开启的虚拟机配置文件

#备份配置文件
cp [虚拟机编号].conf [虚拟机编号].conf.bak
vim ./[虚拟机编号].conf
#备份配置文件
cp [虚拟机编号].conf [虚拟机编号].conf.bak
vim ./[虚拟机编号].conf

将以下内容添加到文件首行

args: -global driver=cfi.pflash01,property=secure,value=on -chardev socket,id=chrtpm,path=/var/run/qemu-server/swtpm.sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
args: -global driver=cfi.pflash01,property=secure,value=on -chardev socket,id=chrtpm,path=/var/run/qemu-server/swtpm.sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0

重启虚拟机

qm reboot [虚拟机编号]
qm reboot [虚拟机编号]

重启后虚拟机会自动开启 TPM 2.0

Proxmox VE 添加 TPM 2.0 支持

OS, 所有PVE, TPM, virtualization

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论

显示名称 *

电子邮箱地址 *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK