You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向cRLDistributionPoint类型LDAP对象添加certificateRevocationList时出现“certificaterevocationlist: requires ;binary transfer”错误求助

解决LDAP添加certificateRevocationList;binary时的"requires ;binary transfer"错误

我之前维护OpenLDAP环境时碰到过几乎一模一样的问题,结合你用的Ubuntu 20.04.3 LTS + slapd 2.4.49环境,咱们可以从这几个方向排查和解决:

1. 先排除工具层面的问题:用ldapmodify命令行测试

phpLDAPadmin有时候会在处理LDIF文件时偷偷修改属性名(比如去掉;binary后缀),导致slapd收到的请求不符合要求。建议先直接用OpenLDAP自带的命令行工具测试:

  1. 把你的LDIF内容保存成crl-modify.ldif文件
  2. 执行以下命令(替换成你的管理员DN):
ldapmodify -x -D "cn=admin,dc=ec2,dc=internal" -W -f crl-modify.ldif

如果命令行执行成功,那问题肯定出在phpLDAPadmin上——要么是它的版本有bug,要么是导入时的设置没配置对。这种情况下,你可以暂时用命令行完成操作,或者尝试升级phpLDAPadmin到最新版本。

2. 检查LDIF文件的细节

虽然你的LDIF看起来格式正确,但还是要确认两点:

  • 属性名的;binary后缀是小写的:slapd对这个后缀的大小写是敏感的,必须写成certificateRevocationList;binary,不能是;Binary或者;BINARY
  • Base64内容的换行符合规范:每一行不能超过76个字符,你的内容看起来是对的,但可以用base64 -w 76工具重新格式化原始CRL内容,确保没有超长行

3. 确认schema中属性的定义是否正确

slapd报错的核心原因是它认为certificateRevocationList属性必须以二进制方式传输,这说明schema里这个属性的语法是二进制类型,但你的请求没带上;binary后缀(或者被工具去掉了)。你可以检查相关schema文件:
打开/etc/ldap/schema/inetorgperson.schema,找到certificateRevocationList的定义,应该类似这样:

attributetype ( 2.5.4.31 NAME 'certificateRevocationList'
  DESC 'X.500 attribute type: certificateRevocationList'
  EQUALITY octetStringMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )

其中SYNTAX 1.3.6.1.4.1.1466.115.121.1.40是二进制语法的OID,默认slapd安装中这个定义是正确的,要是你看到其他值,才需要修正schema,但这种情况极少出现。

4. 手动在phpLDAPadmin中添加属性

如果一定要用phpLDAPadmin,试试手动添加属性而不是导入LDIF:

  1. 找到cn=Mandeep这个条目,进入编辑页面
  2. 点击"添加新属性",选择certificateRevocationList,然后在属性名后面手动加上;binary
  3. 选择"Binary"类型,粘贴你的Base64编码CRL内容
  4. 保存修改,看是否成功

这种方式可以避免LDIF导入时的格式转换问题。

内容的提问来源于stack exchange,提问作者mandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:32:39