简介
OpenLDAP是轻型目录访问协议(Lightweight Directory Access Protocol,LDAP)的自由和开源的实现,在其OpenLDAP许可证下发行,并已经被包含在众多流行的Linux发行版中。如果你理解微软的AD,那么他将提供和AD类似的功能。
架构图

openLDAP server配置
cert-manager生成证书
CA证书生成过程可以参考cert-manager中CA部分,此处直接通过CA的issuer创建服务器所需的certificates,其中secretName
后面会用到,commonName
可以写ldap server的域名
1 | $ cat openldap-server-cert.yaml |
helm安装openldap
- 检查是否包含openldap的helm仓库,仓库地址为:http://mirror.azure.cn/kubernetes/charts/
1 | $ helm repo list |
注意:若没有则添加仓库
1 $ helm repo add stable http://mirror.azure.cn/kubernetes/charts/
- 查找openldap chart,并下载到本地
1 | $ helm search openldap |
- 修改chart中的values.yaml文件
1 | $ cd openldap |
主要修改的地方有:1.tls.enabled: true
启动tls认证
2.tls.secret: hq-openldap1
tls认证证书的secret,为cert-manager生成secertNAME
3.env.LDAP_DOMAIN: "stopenldap.com"
ldap DN名称
4.adminPassword: admin
admin的密码
5.configPassword: config
config的密码
6.persistence.enabled:true
设置持久化存储,默认时候default storageclass
7. persistence.size:2G
持久化存储大小
- 安装
在当前目录下执行helm install安装
1 | $ helm install --name hqopenldap --namespace default . |
* 快速安装 *
如果不想本地保存chart,而是直接安装则可执行以下命令,其中env.LDAP_TLS_VERIFY_CLIENT=try表示client可以没有证书。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 >$ helm install --name hqopenldap \
>--namespace default \
>--set tls.enabled=true \
>--set tls.secret=hq-openldap1 \
>--set env.LDAP_DOMAIN=stopenldap.com \
>--set adminPassword=admin \
>--set configPassword=config \
>--set persistence.enabled=true \
>--set persistence.size=2Gi \
>--set env.LDAP_TLS_VERIFY_CLIENT=try \
>stable/openldap
检查是否启动成功
```bash
$ kubectl get pod -l app=openldap
NAME READY STATUS RESTARTS AGE
hqopenldap-85d59d49b4-6jl7c 1/1 Running 0 138m
客户端测试
签发客户端所需的证书和私钥
此处所使用的CA issuer和ldap server中所使用的CA需要为同一个,commonName
可以自行定义,不同客户取名不同
1 | $ cat client-cert.yaml |
导出证书文件
由于测试是使用本地安装的LDAP Admin Tool,所有需要把k8s中生成的证书文件拿下来
- 导出证书
1 | $ kubectl get secret/client-test1 -o jsonpath="{['data']['tls\.crt']}"|base64 --decode > ldap.crt |
- 导出私钥
1 | $ kubectl get secret/client-test1 -o jsonpath="{['data']['tls\.key']}"|base64 --decode > ldap.key |
注意: 由于LDAP Admin Tool使用的私钥为pkcs#8,所以需要将私钥转换下
1 | $ openssl pkcs8 -topk8 -inform PEM -in ldap.key -outform pem -nocrypt -out ldap.pem |
LDAP Admin Tool连接
- 导入证书和私钥
Security
->manage client certificates
->Add Certificate
导入证书
Security
->manage client certificates
->鼠标选中证书-Set Private Key
导入私钥
- 连接LDAP server
连接信息中:Base DN: dc=stopenldap,dc=com 参照helm values.yaml
中env.LDAP_DOMAIN
User DN: cn=admin,dc=stopenldap,dc=com 参照helm values.yaml
中env.LDAP_DOMAIN
Port: 636
Password: admin 参照helm values.yaml
中adminPassword
说明
ldap server启动TLS时,默认需要验证client端的证书,若不想给客户端签发证书,可通过设置server端不验证证书即可,可以通过添加values.yaml中的一个参数设置:env.LDAP_TLS_VERIFY_CLIENT: "try"
never:不验证客户端证书。
allow:检查客户端证书,没有证书或证书错误,都允许连接。
try:检查客户端证书,没有证书(允许连接),证书错误(终止连接)。
demand | hard | true:检查客户端证书,没有证书或证书错误都将立即终止连接。
helm 安装的openldap默认为demand。