📄 rfc2830.txt
字号:
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:张海斌(netdebug internetdebug@elong.com )
译文发布时间:2001-11-08
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须
保留本文档的翻译及版权信息。
Network Working Group J. Hodges
Request for Comments: 2830 Oblix Inc.
Category: Standards Track R. Morgan
Univ of Washington
M. Wahl
Sun Microsystems, Inc.
May 2000
简单目录访问协议(v3):传输层安全扩展
(RFC2830——Lightweight Directory Access Protocol (v3):
Extension for Transport Layer Security)
备忘录状况
这份文档为Internet社区指定为Internet标准(轨迹)协议,并且为进一步改进需要讨论
和建议。这份协议的标准化状态和状况请参阅"Internet官方协议标准(Internet Official Protocol
Standards )"(STD 1)的当前版。这份备忘录的分发不受限制。
版权声明
Copyright (C) The Internet Society (2000)。版权所有。
摘要
这份文档针对LDAP [LDAPv3, TLS]定义了 "启动传输层安全操作Start Transport Layer
Security (TLS) Operation" 。这个操作规定了与LDAP 关联的TLS建立(establishment)
和按照LDAP扩展请求被定义。
目录
0.译者的话 2
1. 本文的约定 3
2. 启动TLS 请求 3
2.1. 请求 TLS建立 3
2.2. 成功回答("Success" Response) 4
2.3. 回答为"success"以外的值 4
3. 启动TLS操作的序列 5
3.1. 在LDAP关联中启动TLS请求 5
3.2. 启动TLS 5
3.3. TLS版本协商 6
3.4. 结果安全级的发现(Discovery of Resultant Security Level) 6
3.5. 客户程序授权身份(Client's Authorization Identity)的断言 6
3.6. 服务程序身份检查 6
3.7. 服务程序能力信息的刷新 7
4. 关闭TLS连接 7
4.1. 舒缓关闭(Graceful Closure) 7
4.2. 突然停止(Abrupt Closure) 8
5. 关于客户程序的授权身份的TLS效应(Effects) 8
5.1. TLS连接建立效应 8
5.1.1. 缺省效应 8
5.1.2. 授权身份的客户断言 8
5.1.2.1. 隐式断言(Implicit Assertion) 9
5.1.2.2. 显式断言(Explicit Assertion) 9
5.1.2.3. 错误状况(Error Conditions) 9
5.2. TLS连接关闭效应 9
6. 安全考虑 10
7. 确认 10
8. 参考 10
9. 作者地址 11
10. 知识产权声明 12
11. 完整版权声明 12
确认 13
0.译者的话
译者在翻译这份文档的时候,采取直译的方式,尽量保证原文的原意。同时也尽量考虑
了中文的语义顺畅,便于中文读者阅读,译者在译文中加入了一些修饰语和译注,修饰语一
般在括号中写明,而译注均有“译者注”字样。由于译者翻译本篇文挡时间有限,译文中一
定会存在许多理解有误、用词不当之处,欢迎读者来信指正,共同学习。
1. 本文的约定
在本文中出现的关键字 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", 和 "OPTIONAL" 作为在[ReqsKeywords]
中的描述被解释。
2. 启动TLS 请求
这部分描述启动TLS(Start TLS)扩展请求(request)和它们自身的扩展回答(response):
如何形成请求,请求的格式,和客户程序(client)必须(MUST)准备处理的各种结果编码
的列举。
本节的随后部分开始描述如何连续从头到尾的启动TLS操作(步骤)。
2.1. 请求 TLS建立
客户程序可以通过传输LDAP PDU执行启动TLS(Start TLS)操作,其(LDAP PDU)包含
为启动TLS操作指定OID的ExtendedRequest [LDAPv3]:
1.3.6.1.4.1.1466.20037
译者注:上面这一串数字即为OID。
PDU:protocol data unit(协议数据单元)
An LDAP ExtendedRequest 定义如下:
ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
requestName [0] LDAPOID,
requestValue [1] OCTET STRING OPTIONAL }
译者注:描述ExtendedRequest定义的为ASN1语法。
启动TLS扩展请求通过设置requestName 域为上面给出的OID字符串组成。
requestValue 域被忽略。客户程序直到接收到启动TLS扩展回答,否则一定不能(MUST NOT)
发送随这个请求连接的任何PDUs。
当启动TLS扩展请求构成(made)时,服务程序(server)必须( MUST)返回一包含启
动TLS扩展回答的LDAP PDU。LDAP ExtendedResponse定义如下:
ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
COMPONENTS OF LDAPResult,
responseName [10] LDAPOID OPTIONAL,
response [11] OCTET STRING OPTIONAL }
启动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)在LDAP Result中包括(include)确切(actual)的referral值,如果它
在resultCode中返回referral。客户程序当前会话不受影响,如果服务程序不支持 TLS。
客户程序可以(MAY)继续执行任何LDAP操作,或者它可以(MAY)关闭(当前)的连接。
服务程序必须(MUST)返回unavailable,如果它支持TLS但是因为一些原因不能建立TLS
连接,例如,证书服务(certificate server)没有回答,它不能接触到(contact)它的
TLS工具(implementation),或者如果服务程序在处理过程中当掉(shutting down)。客户
程序可以(MAY)尝试再次启动TLS操作,或者它可以(MAY)继续进行任何其他LDAP操作,
或者它可以(MAY)关闭连接。
3. 启动TLS操作的序列
这部分描述客户程序和服务程序为TLS的建立必须(MUST)伴随的从头到尾的过程
(procedures)。这些过程考虑了LDAP关联(association)中总体安全的各个方面,包括发
现(discovery)结果安全级(resultant security level)和客户程序的验证标识断言
(assertion)。
注意精确的影响(precise effects),关于客户程序的验证标识,在LDAP关联中的TLS
建立在部分5中详细描述。
3.1. 在LDAP关联中启动TLS请求
客户程序可以(MAY)在建立LDAP关联后任何时间发送启动TLS扩展请求,除非下列情况,
客户程序一定不能(MUST NOT)发送启动TLS扩展请求:
- 如果TLS是在连接中被建立,或者
- 在multi-stage SASL协商(negotiation)过程中,或者
- 如果在连接未完成时发生任何LDAP操作。
任何这些违反(规则)的请求结果是resultCode的operationsError(错误代码),在
本文上面2.3节描述过。
客户程序可以(MAY)在发送启动TLS请求时已经执行了绑定(Bind)操作,或者还没有
绑定。
如果客户程序在发送任何其他请求之前没有建立TLS连接,并且服务程序在执行特定的
请求之前要求客户程序建立TLS连接,服务程序必须(MUST)拒绝(客户程序的)请求,并
返回confidentialityRequired或者strongAuthRequired 结果。(而)客户程序可以(MAY)
发送启动TLS扩展请求,或者可以(MAY)选择关闭连接。
3.2. 启动TLS
如果服务程序愿意和有能力协商TLS,则服务程序将返回成功的resultCode扩展回答。
如果不能,则返回本文上面描述的其他resultCodes。
在成功的情况下,客户程序在连接中已经停止了传送LDAP请求,(客户程序)必须(MUST)
或者开始TLS协商或者关闭连接。客户程序将在对服务程序初始化TLS协商[TLS]的基于传输
连接的TLS记录协议(TLS Record Protocol)中发送PDUs。
3.3. TLS版本协商
应用TLS或者SSL的版本协商是TLS握手协议(TLS Handshake Protocol)的一部分,
在[TLS]文档中详细描述,请参阅。
3.4. 结果安全级的发现(Discovery of Resultant Security
Level)
在TLS连接被建立在LDAP关联之后,双方必须(MUST)逐个判定是否继续构建(based on)
私有级取得(the privacy level achieved)。查明TLS连接的私有级是执行工具
(implementation)的依靠,以及通过各自的本地(local)TLS执行完成。
如果客户程序或者服务程序对于继续的执行判定验证或者私有级还不够高的级别,它应
该(SHOULD)大方地在TLS协商已经完成之后立即关闭TLS连接(参见4.1和5.2部分)。
客户程序可以(MAY)尝试再次启动TLS,或者可以(MAY)发送拆分(unbind)请求,
或者发送任何其他LDAP请求。
3.5. 客户程序授权身份(Client's Authorization Identity)
的断言
客户程序可以(MAY)在表明成功的启动TLS扩展回答到达时,断言在判断客户程序的授
权状态中特定的授权身份被利用。客户程序通过LDAP绑定请求指定SASL[SASL]的"EXTERNAL"
机制来完成。参见本文后面的5.1.2部分。
3.6. 服务程序身份检查
客户程序必须检查针对存在于服务程序证书信息中的服务程序身份,以便理解服务程序
主机名,目的是为了阻止中间人攻击(man-in-the-middle attacks)。
匹配执行按照下列规则:
- 客户程序必须(MUST)使用打开LDAP连接的那个服务程序主机名作为比较在服务程序
证书中表示的服务程序名。客户程序一定不能(MUST NOT)使用服务程序规范的DNS名字
或者任何其他导出的形式名字(form of name)。
- 如果类型dNSName 的subjectAltName扩展出现在证书中,它应该被用于服务程序身份
的来源。
- 匹配是大小写无关的(case-insensitive)。
- 通配符"*"是允许的。如果存在,它仅适用于最左面名字的组成部分。
例如 *.bar.com 将匹配 a.bar.com, b.bar.com,等等。但不能是bar.com。如果存在证书
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -