v3 简单目录访问协议:传输层安全扩展( 二 )


ExtendedResponse::=[APPLICATION24]SEQUENCE{
COMPONENTSOFLDAPResult,
responseName[10]LDAPOIDOPTIONAL,
response[11]OCTETSTRINGOPTIONAL}
启动TLS扩展回答必须(MUST)包含responseName域,其(值)必须(MUST)被设置为
存在于启动TLS扩展中responseName域相同的字符串 。Response域被忽略 。服务程序必须
(MUST)设置resultCode域或者为成功(success)或者为在段落2.3中定义的值中的一个 。
2.2.成功回答("Success"Response)
假如ExtendedResponse包含的resultCode值为success,这说明服务程序愿意(willing)
和有能力协商(negotiate)TLS 。参考段落3,获得具体内容 。
2.3.回答为"success"以外的值
假如ExtendedResponse包含的resultCode值为success以外的其他(值),这说明服务
程序不愿意(unwilling)或者没有能力协商TLS 。
假如启动TLS扩展请求没有成功,resultCode(值)将为下面中的一个:
operationsError(操作序列不正确(incorrect);例如,TLS已经建立)
protocolError(TLS不被支持或者不正确的PDU结构)
referral(这个服务程序没有做TLS,试试这个)
unavailable(例如,一些相关TLS的主要问题,或者服务程序被杀死(shutting
down))
假如客户程序违反任何在段落3中描述的启动TLS扩展操作序列请求,服务程序必须
(MUST)返回operationsError 。
假如服务程序不支持TLS(由于设计或者由于当前的配置),它必须(MUST)设置
resultCode为protocolError(参见段落4.1.1[LDAPv3]部分),或者为referral 。服务程
序必须(MUST)在LDAPResult中包括(include)确切(actual)的referral值,假如它
在resultCode中返回referral 。客户程序当前会话不受影响,假如服务程序不支持TLS 。
客户程序可以(MAY)继续执行任何LDAP操作,或者它可以(MAY)关闭(当前)的连接 。
服务程序必须(MUST)返回unavailable,假如它支持TLS但是因为一些原因不能建立TLS
连接,例如,证书服务(certificateserver)没有回答,它不能接触到(contact)它的
TLS工具(implementation),或者假如服务程序在处理过程中当掉(shuttingdown) 。客户
程序可以(MAY)尝试再次启动TLS操作,或者它可以(MAY)继续进行任何其他LDAP操作,
或者它可以(MAY)关闭连接 。
3.启动TLS操作的序列
这部分描述客户程序和服务程序为TLS的建立必须(MUST)伴随的从头到尾的过程
(procedures) 。这些过程考虑了LDAP关联(association)中总体安全的各个方面,包括发
现(discovery)结果安全级(resultantsecuritylevel)和客户程序的验证标识断言
(assertion) 。
注重精确的影响(preciseeffects),关于客户程序的验证标识,在LDAP关联中的TLS
建立在部分5中具体描述 。
3.1.在LDAP关联中启动TLS请求
客户程序可以(MAY)在建立LDAP关联后任何时间发送启动TLS扩展请求,除非下列情况,
客户程序一定不能(MUSTNOT)发送启动TLS扩展请求:
-假如TLS是在连接中被建立,或者
-在multi-stageSASL协商(negotiation)过程中,或者
-假如在连接未完成时发生任何LDAP操作 。
任何这些违反(规则)的请求结果是resultCode的operationsError(错误代码),在
本文上面2.3节描述过 。
客户程序可以(MAY)在发送启动TLS请求时已经执行了绑定(Bind)操作,或者还没有
绑定 。
假如客户程序在发送任何其他请求之前没有建立TLS连接,并且服务程序在执行特定的
请求之前要求客户程序建立TLS连接,服务程序必须(MUST)拒绝(客户程序的)请求,并

推荐阅读