您可以使用 SSL(安全套接字层)保护轻量级目录访问协议 (LDAP) 连接。
如果无法在集群中自动配置 LDAP over SSL (LDAPS),请完成下列步骤来手动配置 LDAPS 连接。
您必须准备 IBM Cloud Private 集群,以连接到 LDAPS 目录。
在开始之前,必须导入用于设置 LDAPS 目录的公用或专用 SSL 证书。
如果您有 LDAP 服务器的 SSL 证书,请继续对 SSL 证书进行编码。
如果您没有 LDAP 服务器的 SSL 证书,请完成下列步骤来检索 SSL 证书:
注:您需要使用 ldapsearch 程序来运行这些命令。您可以通过在 Ubuntu 上运行 apt install ldap-utils 以及在 Red Hat Enterprise Linux (RHEL) 上运行 yum install openldap-clients 来安装它。
请确保 /etc/openldap/cacerts 目录中没有 SSL 证书。
运行下面的 ldapsearch 命令来检索证书名称:
ldapsearch -H <LDAP server URL> -d 1 -b <searchbase> -D "" -s base "(<filter>)"
其中,
ldaps://<LDAP server domain name or IP address>:<port>。(objectClass=*)。以下是示例命令和输出:
$ ldapsearch -H ldaps://corp.example.com:636 -d 1 -b o=example.com -D "" -s base "(objectclass=*)"
ldap_url_parse_ext(ldaps://corp.example.com:636)
ldap_create
ldap_url_parse_ext(ldaps://corp.example.com:636/??base)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP corp.example.com:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 9.17.186.253:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
attempting to connect:
connect success
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
证书信息位于输出的 TLS: certificate [CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US]is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user.. 部分。
在 Web 浏览器中找到证书,使用 PEM 格式将其导出到文件,并使用 .crt 扩展名来保存 PEM 文件。
注:如果有多个证书,那么以 PEM 格式将每个证书导出到文件,并使用 .crt 扩展名保存 PEM 文件。
.crt 文件复制到 IBM Cloud Private 集群的主节点。如果要配置单个 LDAPS 连接,请完成对 SSL 证书进行编码一节中的步骤。
完成下列步骤,按照 base64 格式对证书进行编码:
openssl x509 -in <cert>.cer -outform PEM -out <convertedCert>.pem
如果 LDAP 服务器使用链式证书(根 CA 和中间证书),请将每个证书转换为 PEM 格式。然后,将其组合成一个文件。使用以下命令来组合已转换的证书。 cat <convertedFirstCert.pem> <convertedSecondCert.pem> ..<converted_n_Cert.pem> > <convertedCombinedCert>.pem
按照 base64 格式对证书进行编码。
cat <LDAPS SSL certificate name>.pem | base64 -w 0
输出类似于以下代码:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdDRENDQS9DZ
0F3SUJBZ0lRS3k1dTZ0bDFObXdVaW03Ym8zeU1CekFOQmdrcWhraUc5
...
lDOHg0OU9oZ1E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KDQo=
接下来,准备集群。
如果要配置多个 LDAPS 连接,请先在 platform-auth-ldaps-ca-cert 的“data”>“certificate”一节中检查是否已有证书。如果已有证书,请完成以下各节中的步骤:
如果没有任何证书,请完成对 SSL 证书进行编码中的步骤。
您可以使用管理控制台或命令行界面 (CLI) 来检索证书。
如果使用的是管理控制台,请执行以下步骤:
platform-auth-ldaps-ca-cert,然后单击操作 > 编辑。这将显示编辑密匙窗口。从“data”>“certificate”一节复制 base64 编码证书值。
"data": {
"certificate": "LS0tLS1...ASDFASDo="
},
转换现有的编码证书,并将其保存到文件中。
echo "<copied_cert_value>" | base64 --decode > existing_cert.pem
如果使用的是 CLI,请执行以下步骤:
kubectl 来完成以下任务。有关安装 kubectl 的更多信息,请参阅安装 Kubernetes CLI (kubectl)。 kubectl -n kube-system get secret platform-auth-ldaps-ca-cert -o "jsonpath={.data['certificate']}" | base64 --decode > existing_cert.pem
接下来,对 SSL 证书进行编码。
完成下列步骤,按照 base64 格式对证书进行编码:
将新证书转换为 PEM 格式。
openssl x509 -in <cert>.cer -outform PEM -out <convertedCert>.pem
如果 LDAP 服务器使用链式证书(根 CA 和中间证书),请将每个证书转换为 PEM 格式。然后,将其组合成一个文件。使用以下命令来组合已转换的证书。
cat <convertedFirstCert.pem> <convertedSecondCert.pem> ..<converted_n_Cert.pem> > <convertedCombinedCert>.pem
将现有证书添加到新证书中,或者添加到联合证书中(如果您使用链式证书)。
cat existing_cert.pem <new_cert.pem or convertedCombinedCert.pem> > final_combined_cert.pem
按照 base64 格式对证书进行编码。
cat <LDAPS SSL certificate name>.pem | base64 -w 0
输出类似于以下代码:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdDRENDQS9DZ
0F3SUJBZ0lRS3k1dTZ0bDFObXdVaW03Ym8zeU1CekFOQmdrcWhraUc5
...
lDOHg0OU9oZ1E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KDQo=
接下来,请完成准备集群一节中的步骤。
您可以使用管理控制台或 CLI 来准备集群。
如果使用的是管理控制台,请执行以下步骤:
platform-auth-ldaps-ca-cert,然后单击操作 > 编辑。这将显示编辑密匙窗口。将 base64 证书粘贴到以下部分中:
"data": {
"certificate": ""
},
更新后的部分类似于以下文本:
"data": {
"certificate": "LS0tLS1<very_long_base64_string>ASDFASDo="
},
auth-idp,然后单击操作 > 编辑。这将显示编辑 DaemonSet 窗口。auth-idp Pod 中。请稍候一两分钟,然后检查是否已在 Pod 上装载该证书。
获取 auth-idp Pod。
kubectl -n kube-system get pods | grep auth-idp
检查是否已在 Pod 上装载该证书。
kubectl -n kube-system exec -it auth-idp-<pod-id> -c platform-auth-service cat /opt/ibm/ldaps/ldaps-ca.crt
如果使用的是 CLI,请执行以下步骤:
kubectl 来完成以下任务。有关安装 kubectl 的更多信息,请参阅安装 Kubernetes CLI (kubectl)。将 LDAPS CA 证书私钥复制到文件:
kubectl get secret platform-auth-ldaps-ca-cert -o yaml -n kube-system > platform-auth-ldaps-ca-cert-secret.yaml
复制 base64 证书并将其粘贴到 platform-auth-ldaps-ca-cert-secret.yaml 文件中。
获取安全服务 DaemonSet YAML 文件:
kubectl -n kube-system get ds auth-idp -o yaml > auth-idp.yaml
应用更改:
kubectl apply -f platform-auth-ldaps-ca-cert-secret.yaml
kubectl apply -f auth-idp.yaml
接下来,完成连接到 LDAP 目录部分中的步骤。