一、pccs的介绍
英特尔®软件护卫扩展数据中心验证原语(Data Center Attestation Primitives,DCAP)是英特尔为在数据中心部署英特尔 SGX 验证服务而提供的解决方案。由于每个数据中心环境都有需要定制的独特需求,因此它是以组件集合的形式发布的,而不是一个完整的交钥匙解决方案。
而PCCS(Provisioning Certification Caching Service)供应证书缓存服务则是其组件之一,其主要作用是提供缓存服务,包括对远程认证的缓存服务。
二、pccs的搭建过程
主要参考intel官方文档 Intel® Software Guard Extensions Data Center Attestation Primitives (Intel® SGX DCAP): A Quick Install Guide
2.1 订阅用于 ECDSA 认证的英特尔 PCS 并获取所需的 API 密钥
此步骤参考intel官方文档即可,Services to Meet Today’s Heightened Security Demands
2.2 安装及部署PCCS(ubuntu 20.04LTS)
安装包版本选择:PCCS == 1.19.100.3-focal1; node.js == 14.21.3;php == 7.4.33
这里pccs对node.js的版本要求很严格
2.2.1 安装PCCS软件包
获取 Node.js 安装脚本
$ curl -o setup.sh -sL https://deb.nodesource.com/setup_14.x
$ chmod a+x setup.sh
$ sudo ./setup.sh
脚本完成后,使用 apt 添加 Node.js 包
$ sudo apt-get -y install nodejs
使用英特尔的 Debian 软件包来安装英特尔 SGX DCAP,但为此需要将软件源添加到 apt 的源列表中,并添加密钥
$ sudo su
# echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu focal main' > /etc/apt/sources.list.d/intel-sgx.list
$ wget -O - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
$ apt update
现在准备安装必备软件。使用 SQLite* 作为数据库存储引擎(这是 PCCS 的默认设置)。 PCCS 还需要编译 Node.js 模块以与 C 库交互,因此必须将 build-essential 元包添加到列表中
$ apt install sqlite3 python build-essential
安装完成后,开始安装 PCCS 软件包
$ apt install sgx-dcap-pccs
2.2.2 部署PCCS
安装将运行 PCCS 安装脚本,该脚本会询问您几个问题
Do you want to configure PCCS now? (Y/N)
选择Y
Set HTTPS listening port [8081] (1024-65535)
接受默认的监听端口8081, 或者选择一个非特权的其他接口
Set the PCCS service to accept local connections only? [Y] (Y/N)
回答N,因为需要接受其他结点的连接
Set your Intel PCS API key (Press ENTER to skip)
输入2.1中获取的秘钥,主密钥和次密钥都可以
Choose caching fill method : [LAZY] (LAZY/OFFLINE/REQ)
回答 “REQ”。这将使缓存服务处于 "按请求 "模式,这意味着它会在收到供应请求时获取主机的验证抵押品。
2.3 安装及部署phpLiteAdmin
这一步的目的是为了查看pccs的缓存数据库,在intel SGX官方文档上采用sqlitebrowser 组件在部署的主机上直接查看的,但如果部署的主机不支持可视化图形界面则无法采用sqlitebrowser 这种方法。所以本文给出一种远程网页端的访问方式来查看pccs的数据库,实现上依赖phpLiteAdmin,php和apache等组件。
问题汇总
nodejs和pccs不匹配呢,我一直想换nodejs却不想想有没有可能是pccs更新了,所以现在其实是两个选择,更新nodejs或者回滚pccs,我尝试更新nodejs多次均已失败告终,所以只好用旧版本的pccs了
PCCS Bug记录,ubuntu的PCCS安装失败的话,每次安装其他东西时都会提示重新安装pccs,这很离谱
npm的代理proxy不要随便设置,改register为镜像就好,npm是node.js的一部分,https://download.01.org/intel-sgx/sgx_repo/ubuntu focal InRelease 这里本来是jammy
journalctl -fu pccs.service这个命令会显示所有与 pccs.service 相关的日志条目。如果你想查看最近的日志或者实时跟踪新产生的日志,可以添加 -f 参数来进行实时查看
PHP Fatal error: Uncaught Error: Call to undefined function mb_strlen() in /var/www/html……
①/etc/php/7.4/php –ini文件启用mbstring扩展②安装sudo apt install php7.4-mbstring③确认 mbstring 扩展已成功安装php -m | grep mbstring
/usr/bin/node -r esm /opt/intel/sgx-dcap-pccs/pccs_server.js 硬启动pccs.server.js
Npm install esm 这个需要在pccs_server.js的同级目录安装,这里是/opt/intel/sgx-dcap-pccs
lsof -i :8081:查找正在使用特定端口的进程
nano /var/log/apache2/error.log 查看网页端刷新报错的信息