跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
19. 使用 Oracle Solaris 安全 Shell(任务)
20. Oracle Solaris 安全 Shell(参考)
Kerberos 服务与 DNS 的交互方式和 nsswitch.conf 文件
要访问特定服务器上的特定服务,用户必须获取两个凭证。第一个凭证是票证授予票证(即所知的 TGT)。票证授予服务解密此凭证后,该服务即可为用户请求访问的服务器创建第二个凭证。然后,可使用第二个凭证来请求访问该服务器中的相应服务。该服务器成功解密第二个凭证后,便会授予用户访问权限。以下各节详细介绍了此过程。
要启动验证过程,客户机需要向验证服务器发送针对特定用户主体的验证请求。该请求在发送时未加密。由于请求中未包含安全信息,因此无需加密。
验证服务收到请求后,将在 KDC 数据库中查找该用户的主体名称。如果主体与数据库中的项匹配,验证服务会获取该主体的私钥。然后,验证服务将生成一个供客户机和票证授予服务使用的会话密钥(称为会话密钥 1),以及一个用于票证授予服务的票证(票证 1)。此票证也称作票证授予票证 (ticket-granting ticket, TGT)。会话密钥和票证均使用该用户的私钥进行加密,并且会将信息发回客户机。
客户机通过该用户主体的私钥,使用此信息对会话密钥 1 和票证 1 进行解密。由于该私钥仅对此用户和 KDC 数据库公开,因此包中的信息应是安全的。客户机将该信息存储在凭证高速缓存中。
在此过程中,通常会提示用户输入口令。如果用户指定的口令与用于生成存储在 KDC 数据库中的私钥的口令相同,则客户机可以成功解密验证服务发送的信息。现在,客户机便拥有了用于票证授予服务的凭证。客户机现在可以请求用于服务器的凭证。
图 27-2 获取用于票证授予服务的凭证
要请求对特定服务器的访问权限,客户机首先必须向验证服务获取该服务器凭证。请参见获取用于票证授予服务的凭证。客户机随后会向票证授予服务发送请求,其中包括服务主体名称、票证 1 和以会话密钥 1 加密的验证者。票证 1 最初是使用票证授予服务的服务密钥,由验证服务进行加密的。
因为票证授予服务的服务密钥为票证授予服务所知,票证 1 可以解密。票证 1 中的信息包括会话密钥 1,这样,票证授予服务可以解密验证者。在此情况下,由票证授予服务对用户主体进行验证。
一旦验证成功,票证授予服务会为用户主体和服务器(会话密钥 2)生成会话密钥,为服务器生成票证(票证 2)。然后,会使用会话密钥 1 对会话密钥 2 和票证 2 进行加密。因为会话密钥 1 仅为客户机和票证授予服务所知,因此该信息是安全的,且可以通过网络安全发送。
客户机收到该信息包后,会使用会话密钥 1 解密信息,该密钥储存在凭证高速缓存中。客户机即获取用于服务器的凭证。现在,客户机可以请求访问该服务器中的特定服务。
图 27-3 获取服务器凭证
要请求对特定服务的访问权限,客户机必须首先从验证服务器获取用于票证授予服务的凭证,然后从票证授予服务获取服务器凭证。请参见获取用于票证授予服务的凭证和获取服务器凭证。然后,客户机可将包含票证 2 和另一个验证者的请求发送到该服务器。验证者使用会话密钥 2 加密。
票证 2 是由票证授予服务使用该服务的服务密钥进行加密的。由于服务密钥对服务主体公开,因此该服务可以解密票证 2 并获取会话密钥 2。然后,可使用会话密钥 2 解密验证者。如果成功解密验证者,则可授予客户机对该服务的访问权限。
图 27-4 获取对特定服务的访问权限