65.9K
CodeProject 正在变化。 阅读更多。
Home

学习如何使用 Java 远程配置您的 Intel AMT 系统

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2011年6月27日

CPOL

4分钟阅读

viewsIcon

16756

本文介绍了如何使用 Java 远程配置您的 Intel® AMT,并解释了与基于主机的配置方法的区别。

在我的上一篇 Java 博客中,我演示了如何使用 Java 执行 AMT 的 基于主机的配置。现在我将讨论如何执行远程配置。基于主机和远程配置之间的区别主要在于配置代码的运行位置以及执行代码的安全要求。对于基于主机的方法,我们的要求是我们需要在 AMT 客户端本身上以管理员权限运行。对于远程配置方法,我们的要求是我们需要通过有线网络连接在另一台机器上运行,并使用平台信任的设置证书。此外,设置证书的主题名称必须颁发给 DHCP 选项 51 报告的域名。如果我们缺少任何这些要求,我们将无法执行远程配置 AMT。请记住,这些远程要求仅适用于 AMT 的初始配置。在配置 AMT 之后,我们将可以自由使用无线网络或静态 IP,等等。从 Java 的角度来看,与基于主机的方法没有太大区别。在这两种情况下,我们将使用 WsMan 命令来执行配置。真正的区别在于 WsMan 连接是如何建立的。

要在 Java 中建立远程连接,我们需要加载一个设置证书并告诉 Java 使用它。在实际应用中,部署 AMT 的组织将从受信任的 Web 机构获取设置证书。但是,为了开发和测试,我们可以生成自己的测试证书并手动配置我们的机器来信任它,这样我们就不必从 Web 机构获取真正的证书。

Java 代码使用设置证书创建一个 TLS 会话,然后设置一些数据并通过调用 CommitChanges() 完成远程配置。以下是代码的样子

intel.management.wsman.WsmanConnection.createConnection("https://myAmt:16993/wsman");

intel.management.wsman.DefaultAuthenticator defAuth =
new intel.management.wsman.DefaultAuthenticator();

// for remote configuration the digest password is always admin/admin since 
// the Setup Cert is our credentials
defAuth.addCredential(amtUrl,
"digest", "admin", "admin");

java.net.Authenticator.setDefault(defAuth);

// create a default trust managager for TLS authorization
DefaultTrustManager trustMgr = new DefaultTrustManager();
connection.setTrustManager(trustMgr);
// for remote config we will skip host name verification against the 
// certificate but we can use the OTP instead for security
connection.setHostnameVerifier(trustMgr);

// Load the amt setup certificate and private key into the trust manager
DefaultKeyManager keyMgr = new DefaultKeyManager("c:\AmtSetupCert.pfx","123");
connection.setKeyManager(keyMgr);

ManagedReference ref = connection.newReference("AMT_SetupAndConfigurationService");

ManagedInstance inst = ref.get();
System.out.println(WsmanUtils.getXML(inst));

//setting data is optional (unsally defaults are already set)
setData(connection,props);

//end setup by calling commit changes
ManagedInstance input = ref.createMethodInput("CommitChanges");
ManagedInstance output = ref.invoke(input);
System.out.println(WsmanUtils.getXML(output));
//if the ReturnValue is 2057 (missing data) then we need to set data

可以在此处下载一个可运行的示例。要运行 java 代码,请编辑 ztc.propertes 文件以反映您的 AmtSystem 的名称和设置证书文件的路径。另一点要记住的是,在您进行远程配置之前,AMT 系统的网络接口必须处于活动状态。您可以通过在启动时按 CTRL-P 进入 Mebx,然后选择“Intel(r) AMT 配置 -> 远程设置和配置 -> TLS-PKI -> RCFG”来打开 Amt 网络接口。或者,您可以从 %SDK_ROOT%\Windows\Intel_Manageability_Configuration\Bin 复制 ZTCLocalAgent.exeStatusStrings.dll,并在目标 AMT 系统上运行 "ZTCLocalAgent.exe -activate",这将打开网络接口。如果您使用 ZtcLocalAgent.exe,您将需要“以管理员身份运行”。否则,您将收到一条错误消息,提示未找到 HECI 设备。

此示例的目的是展示如何通过远程设置连接发出 wsman 命令。对于完整的基于 Java 服务器的解决方案,您希望在已发现 AMT 并已打开其网络接口的本地代理发送消息时执行 wsman 命令。

如前所述,我们可以使用 AMT SDK 生成测试证书。注意:以下所有步骤仅用于手动创建测试证书。如果您有真正的 AMT 设置证书,您可以跳过所有这些。
打开命令提示符。
编辑 checkztc.bat,更改行 ZTC_CLIENT_CN=acme_app.intel.com
将 amce_app.intel.com 更改为与您的 DHCP 域后缀匹配。

cd %SDK_ROOT% \Windows\Intel_Manageability_Configuration\Bin\CertGenerator\ZtcSecScripts>
>checkztc.bat
配置服务器需要 ZTC 证书,以便
能够在 PKI-CH 方法中设置 Intel(R) AMT 设备。
您可以创建演示根 CA 并让它签署演示 ZTC 证书。
*注意* 要启用证书,您需要将创建的根 CA 的哈希添加到
FW 证书哈希列表中。
创建演示根 CA 并使用它来签署 ZTC 证书 [Y/n] ? (选择 (Y)es)

注意:您可以忽略以下警告。
警告:无法打开配置文件:..\x86DllMT/..\x86DllMT/ssl/openssl.cnf

>openssl pkcs12 -export -in fullchain.pem -inkey .\ZTC\private\ZTC_key.pem -out ztc.pfx
警告:无法打开配置文件:..\x86DllMT/..\x86DllMT/ssl/openssl.cnf
将 '屏幕' 加载到随机状态 - 完成
输入导出密码:(输入一些容易记住的内容,例如 123)
正在验证 - 输入导出密码:123
无法写入 '随机状态'

在生成测试设置证书后,您需要将它的根 CA 指纹输入到 MeBx 中。
打开 %SDK_ROOT%\Windows\Intel_Manageability_Configuration\Bin\CertGenerator\ZtcSecScripts\rootCa\rootCert.cer
转到详细信息选项卡并写下指纹数据。
然后在启动时按 CRTL-P 并选择“Intel(r) AMT 配置 -> 远程设置和配置 -> TLS-PKI -> 管理哈希”并输入数据。

如果您对此帖子有任何疑问,请随时在我们的 Manageability & Security Community 上与我们联系。

© . All rights reserved.