如何在Ubuntu 22.04上启用并运行tpm2tss OpenSSL引擎?
如何在Ubuntu 22.04上启用并运行tpm2tss OpenSSL引擎?
咱们一步步来搞定这个问题,确保你能顺利用上tpm2tss OpenSSL引擎配合.NET 8操作TPM密钥:
1. 安装必要软件包
Ubuntu 22.04的官方仓库里已经打包好了所需工具,直接用apt安装就行。打开终端执行以下命令:
sudo apt update && sudo apt install -y tpm2-tss-engine openssl
这个命令会先更新包列表,再安装tpm2-tss-engine(核心的OpenSSL引擎)和openssl(如果系统未预装)。
2. 确认引擎安装状态
安装完成后,先验证引擎是否能被OpenSSL识别。执行:
openssl engine -t -c tpm2tss
如果输出里包含(available)字样,说明引擎已经成功安装并可用。
3. 配置OpenSSL默认加载tpm2tss引擎(可选但推荐)
为了避免每次使用都手动指定引擎,咱们可以把tpm2tss配置为OpenSSL的默认引擎之一。编辑OpenSSL的主配置文件:
sudo nano /etc/ssl/openssl.cnf
在文件末尾添加以下配置内容:
[engine_section] tpm2tss = tpm2tss_section [tpm2tss_section] engine_id = tpm2tss dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/libtpm2tss.so default_algorithms = ALL init = 1
小贴士:如果不确定
libtpm2tss.so的路径,可以用find /usr/lib -name libtpm2tss.so命令查找,替换上面的路径即可。
保存并退出编辑器后,新开一个终端让配置生效。
4. 验证配置是否生效
执行以下命令查看所有已加载的引擎:
openssl engine -v
如果输出里能看到tpm2tss引擎,并且标记为[available],说明配置成功。
5. 测试引擎功能
咱们来生成一个存储在TPM里的RSA密钥,测试引擎是否正常工作:
openssl genpkey -algorithm RSA -outform PEM -engine tpm2tss -out tpm_key.pem
如果命令执行成功,会生成一个tpm_key.pem文件——这个文件存储的是TPM密钥的引用(而非密钥本身),后续在.NET 8里用SafeEvpPKeyHandle.OpenPrivateKeyFromEngine("tpm2tss", ...)就能调用这个密钥了。
额外注意事项
- 确保你的设备确实有TPM 2.0芯片,并且已经在BIOS/UEFI中启用了TPM功能;
- 如果遇到引擎无法加载的情况,可以检查包是否安装完整,或者配置文件里的路径是否正确;
- 后续在.NET 8代码中,指定引擎名称为
tpm2tss即可调用这个OpenSSL引擎操作TPM中的密钥。
备注:内容来源于stack exchange,提问作者GuyWithDogs
相关产品推荐
相关产品推荐

