支持客户端验证的客户端(Sun Ray Client 或 Oracle Virtual Desktop Client)具有用于客户端验证的公钥/私钥对。客户端的密钥对在客户端首次使用适当的固件进行引导时生成。
较旧版本的固件或出厂时预安装在 Sun Ray Client 上的固件不能生成密钥,因此不支持客户端验证。请注意,预先安装的固件版本均以 MfgPkg
开始,您可以据此识别预先安装的固件。您必须更新 Sun Ray Client 上的固件才能生成密钥。
当客户端连接到服务器且启用了客户端验证时,客户端会将其公钥和客户端标识符发送到服务器。对于 Sun Ray Client,客户端标识符为其 MAC 地址。最初,服务器只能验证客户端是否是所提交的密钥的所有者,而不能验证客户端是否合法使用所提交的客户端 ID。
Sun Ray 服务器在 Sun Ray 数据存储库中存储已知客户端及其公钥的列表。可将已存储密钥标记为已确认,表示已通过人为介入确认了给定客户端的密钥真实性。如果没有将客户端的密钥标记为已确认,客户端验证功能就只能确保客户端标识符不会被多个具有不同密钥的不同客户端使用。仅当密钥已被验证且被标记为已确认时,客户端验证才能真正验证客户端的身份。
Oracle Virtual Desktop Client 的密钥没有存储在数据存储库中,因此不会通过 utkeyadm 命令或管理 GUI 显示。实际上,Oracle Virtual Desktop Client 使用其密钥指纹作为客户端标识符,这样就会自动确定给定 ID 密钥的真实性。有关更多信息,请参见第 11.3.1 节 “密钥指纹”。
默认情况下,除非通过其他密钥使用了客户端的身份,否则可向具有未确认密钥的客户端授予会话。如果针对某个客户端提交了多个密钥,则表示该客户端的会话可能遭到攻击,因此会拒绝该客户端的会话访问权。用户需要明确确认其中一个密钥为可信密钥,才能重新启用客户端的访问权。
可以选择更严格的策略,即需要已验证的客户端身份,并拒绝对没有使用 utpolicy 命令或管理 GUI 验证并确认过其密钥的任何客户端的访问。如果选择使用此策略,必须将每个新客户端的密钥明确标记为“已确认”,然后才能使用客户端。为了充分有效地应用此策略,还应该在安全配置中将客户端验证模式设置为“硬安全模式”。
可以使用 utkeyadm 命令管理客户端身份及其关联密钥。可以使用密钥管理工具列出用于客户端的所有密钥。
使用 utkeyadm 命令可以执行以下操作:
列出与已知客户端关联的密钥及其状态
验证客户端密钥的真实性后,对其进行确认。如果针对一个客户端存储了多个未确认的密钥,那么当其中一个密钥被确认为真实密钥后,所有其他密钥都将被删除。
删除无效或过时的密钥条目
导出所有或所选客户端身份的密钥数据,用于备份以及传送至其他 Sun Ray 服务器实例
导入在当前或其他 Sun Ray 服务器实例上导出的密钥数据
也可以通过管理 GUI 中的客户端的 "Desktop Properties"(桌面属性)页面来查看、确认或删除客户端的关联密钥。
密钥指纹是用户可见的密钥名称。密钥指纹由基于公钥数据的 MD5 散列生成。
可以在密钥面板中查看客户端的密钥指纹。要显示密钥面板,请按 Stop-K 键(Oracle 键盘)或 Ctrl-Pause-K 键(非 Oracle 键盘)。要验证客户端密钥的真实性,可以针对同一客户端,将客户端的密钥面板中显示的密钥指纹与 utkeyadm 命令显示的密钥指纹进行比较。
Sun Ray 客户端密钥最初会被视为未经确认的密钥,需要人工介入才能确认为特定客户端的真实密钥。Oracle Virtual Desktop Client 密钥总是会被自动视为确认的密钥(自动确认),因为标识 Desktop Access Client 的 ID 唯一地派生于其密钥。
以下过程所设置的策略要求在授予对客户端的访问权限之前提供经确认的密钥。要实施更强的策略,您还应设置安全性策略,以要求从所有客户端进行客户端验证,如第 11.2.5 节 “如何强制从所有客户端进行客户端验证”中所述。
查看当前策略:
# utpolicy Current Policy: -a -g -z both -k pseudo -u pseudo
使用 -c
选项设置客户端验证策略:
# utpolicy -a -g -z both -k pseudo -u pseudo -c
重新启动 Sun Ray 服务:
# utstart
在 Advanced(高级)> System Policy(系统策略)
选项卡页上的 "Client Authentication"(客户端验证)部分,选择 "Client Key Confirmation Required"(需要确认客户端密钥)选项。
重新启动服务器组中的所有服务器。
如果由于冲突或未确认的密钥,客户端收到密钥错误 (49) 或会话被拒绝 (50) 图标,则需要执行本过程。密钥确认后,您必须通过重新引导或插拔智能卡来断开客户端连接,以在更改后访问会话。
查看所有或特定客户端的未确认的密钥(密钥指纹)。
要确定某个未经确认的客户端密钥是否确实属于该客户端,请按 Stop-K 键来显示该客户端的密钥指纹。
# utkeyadm -a -c IEEE802.000000ee0d6b 1 key confirmed . # utkeyadm -a -c IEEE802.00000f85f52f -k 1c:d4:b9:31:9d:f0:00:ba:db:ad:65:6c:8e:80:4d:b3 1 key confirmed .
转至单个客户端的 "Desktop Unit Properties"(桌面单元属性)页。
在 "Client Keys"(客户端密钥)表中,选择一个密钥并单击 "Confirm"(确认)。
如果您确定所有需要进行密钥确认的客户端都已连接到服务器组(其真正的密钥存储在服务器上),并且确定不需要的客户端没有在服务器上存储密钥,则也可以概略地确认所有已知未确认的密钥。如果某客户端存在冲突密钥,将会跳过该客户端。
显示所有客户端密钥。
# utkeyadm -l -H
例如:
# utkeyadm -l -H CID TYPE KEY-FINGERPRINT STATUS IEEE802.00000adc1a7a DSA* 4f:98:25:60:3b:fe:00:ba:db:ad:56:32:c3:e2:8b:3e confirmed IEEE802.00000f85f52f DSA* 1c:d4:b9:31:9d:f0:00:ba:db:ad:65:6c:8e:80:4d:b3 unconfirmed IEEE802.00000f85f52f DSA* 4f:98:25:60:3b:fe:00:ba:db:ad:56:32:c3:e2:8b:3e unconfirmed IEEE802.00000fe4d445 DSA* 13:d0:d4:47:aa:7f:00:ba:db:ad:26:3a:17:25:11:24 unconfirmed IEEE802.000000ee0d6b DSA* d0:d7:d0:57:12:18:00:ba:db:ad:b7:0f:5a:c0:8b:13 unconfirmed
确认所有未确认的客户端密钥。
# utkeyadm -a -U Skipping cid=IEEE802.00000f85f52f: Multiple (2) keys found. 2 keys confirmed.
使用前例,IEEE802.00000fe4d445
和 IEEE802.000000ee0d6b
的未确认的客户端密钥均已确认。
要显示客户端的密钥指纹,请按下 Stop-K 组合键(Oracle 键盘)或 Ctrl-Pause-K 组合键(非 Oracle 键盘)。
如果不显示密钥面板,则可能是客户端安装了不支持客户端验证的旧版固件。
如果显示了 "No key available
"(无可用密钥)消息,则说明客户端仍预先安装了 MfgPkg
固件或存在错误。
本过程说明如何显示数据存储库中的客户端密钥。有关显示客户端密钥的其他选项,请参见 utkeyadm
手册页。
使用 utkeyadm 命令。
# utkeyadm -l -H
例如:
# utkeyadm -l -H CID TYPE KEY-FINGERPRINT STATUS IEEE802.00000adc1a7a DSA* 4f:98:25:60:3b:fe:00:ba:db:ad:56:32:c3:e2:8b:3e confirmed IEEE802.00000f85f52f DSA* 1c:d4:b9:31:9d:f0:00:ba:db:ad:65:6c:8e:80:4d:b3 unconfirmed IEEE802.00000f85f52f DSA* 4f:98:25:60:3b:fe:00:ba:db:ad:56:32:c3:e2:8b:3e unconfirmed IEEE802.00000fe4d445 DSA* 13:d0:d4:47:aa:7f:00:ba:db:ad:26:3a:17:25:11:24 unconfirmed IEEE802.000000ee0d6b DSA* d0:d7:d0:57:12:18:00:ba:db:ad:b7:0f:5a:c0:8b:13 unconfirmed
对于多个客户端,请单击 "Desktop Units"(桌面单元)选项卡。
"Client Key Status"(客户端密钥状态)列说明客户端密钥是处于已确认状态还是未确认状态、客户端是否有多个未确认的密钥从而造成了冲突或者客户端是否存在密钥。可能的 "Client Key Status"(客户端密钥状态)值有:None(无)、Unconfirmed(未确认)、Confirmed(已确认)、Conflict(冲突)、Automatic(自动)或 Invalid(无效)。
本过程说明如何显示数据存储库中的客户端密钥。有关显示客户端密钥的其他选项,请参见 utkeyadm
手册页。
使用 utkeyadm 命令。
# utkeyadm [-l|-L] -c cid
-H
其中,
是客户端的桌面 ID,cid
-L
显示其他审计信息。
以下示例显示了客户端 IEEE802.0003ba0d93af 的所有密钥以及其他审计信息。
# utkeyadm -L -c IEEE802.0003ba0d93af -H CID TYPE KEY-FINGERPRINT STATUS CREATED CONFIRMED CONFIRMED BY IEEE802.0003ba0d93af DSA* 4f:98:25:60:3b:fe:d6:f8:fb:38:56:32:c3:e2:8b:3e unconfirmed 2009-06-01 05:08:50 UTC -
对于单个客户端,请转至 "Desktop Unit Properties"(桌面单元属性)页。
"Client Keys"(客户端密钥)表显示了客户端的已知密钥及其状态。
要删除特定客户端密钥,请使用以下命令:
# utkeyadm -d -ccid
-kkey-id
其中,
是密钥所属桌面的桌面 ID,cid
是密钥指纹。
key-id
例如:
# utkeyadm -d -c IEEE802.00000f85f52f -k 1c:d4:b9:31:9d:f0:00:ba:db:ad:65:6c:8e:80:4d:b3 1 key deleted .