如何 install/start 在 Linux 上使用 swtpm

How to install/start using swtpm on Linux

为了准确起见,我正尝试在 Linux 上开始使用 TPM,在我的 Raspberry Pi 上,最简单的方法是在使用 TPM 之前使用 swtpm 来习惯命令和系统芯片。我尝试了 https://github.com/stefanberger/swtpm/wiki#compile-on-ubuntu-2104 上介绍的方法,但出现错误“无法定位 libtpms-dev”。

然后我找了一种安装libtpms的方法,找到了这个solution。但是在得到这两个之后,我仍然无法 运行 这个命令:

sudo swtpm socket --tpmstate dir=/home/ludovic.peyter/swtpm  --tpm2 --server type=tcp,port=2321 --ctrl type=tcp,port=2322 --flags not-need-init,startup-clear

我得到的只是以下错误:

swtpm: SWTPM_NVRAM_Lock_Dir: Could not open lockfile: No such file or directory

swtpm: Error: Could not initialize libtpms.

我被困在这里,没有找到任何可以帮助我解决这个问题的方法,甚至没有其他方法可以避免它。

感谢阅读。

您是否检查过 tpmstate 目录是否存在? mkdir /home/ludovic.peyter/swtpm2 可以为您解决。

我有一个完整的解决方案,由许多不同的解决方案和我自己的测试构建而成。

sudo apt -y install dpkg-dev debhelper libssl-dev libtool net-tools libfuse-dev libglib2.0-dev libgmp-dev expect libtasn1-dev socat python3-twisted gnutls-dev gnutls-bin  libjson-glib-dev gawk git python3-setuptools softhsm2 libseccomp-dev automake autoconf libtool gcc build-essential libssl-dev dh-exec pkg-config dh-autoreconf libtool-bin tpm2-tools libtss0 libtss2-dev 

然后创建一个新目录以便更舒适,然后进入它。

为 libtpms 克隆 git 存储库:

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

移动到生成的 libtpms 目录并运行这些命令:

./autogen.sh -–with-openssl
make dist
dpkg-buildpackage -us -uc -j4

然后,正如在最后一个 运行ning 命令结束时所询问的那样,运行 :

libtool --finish /usr/lib/aarch64-linux-gnu/

目录可能不同,请注意dpkg命令末尾的警告。

并完成 libtpms 的安装:

sudo apt install ../libtpms*.deb

现在回到上一个目录并克隆 swtpm git 存储库:

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

现在运行这个命令:

dpkg-buildpackage -us -uc -j4

以及之前的运行ning命令请求的命令:

libtool --finish /usr/lib/aarch64-linux-gnu/swtpm

目录可能不同,请注意dpkg命令末尾的警告。

现在完成安装:

sudo apt install ../swtpm*.deb

您需要的一切都已安装。现在您需要修改文件 ~/.profile 或 ~/.bash_profile 以添加此行:

export TPM2TOOLS_TCTI="swtpm:port=2321"

现在,每次您需要 swtpm 时,打开两个终端,然后在其中一个 运行 :

swtpm socket --tmpstate dir=<swtpm_path> --tpm2 --server type=tcp,port=2321 --ctrl type=tcp,port=2322 --flags not-need-init,startup-clear

在其他终端,只要执行上面的命令运行s,就可以运行你所有的TPM命令