在了解OpenLDAP 代理的組態為何之後,是時候說明 OpenLDAP 代理的安裝方式以及如何使其運作。在這篇文章中,我們將說明如何在本地端和使用 Docker 安裝 OpenLDAP 代理。
本地端安裝
安裝相當容易,需要安裝一些套件,包括 ldap 伺服器、ldap 用戶端和一些公用程式。以下步驟適用於 CentOS,其他平台的指示應該類似,套件名稱和套件位置略有不同。
- 安裝 openldap openldap-clients openldap-servers
yum install openldap openldap-clients openldap-servers - 如果不存在,則建立 /etc/openldap/slapd.conf。
- 更新 /etc/openldap/slapd.conf 並新增 LDAP 項目(查看之前的文章,了解組態為何)
- 移除目前的 /etc/openldap/slapd.d/ 內容
rm -rf /etc/openldap/slapd.d/* - 重新產生組態
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/ - 將組態目錄的所有者變更為 ldap。對於 Ubuntu,它是 openldap。
chown -R ldap:ldap /etc/openldap/slapd.d - 重新啟動 slapd 服務
/etc/init.d/slapd restart
這應該會啟動具有您所需組態的 OpenLDAP 代理。如果您不想使用 LDIF 樣式的組態,可以在更新 /etc/ldap/slapd.conf 檔案後刪除 /etc/ldap/slapd.d 資料夾。
Docker 設定
Docker 已成為託管單一服務以供特定用途使用的熱門方法。OpenLDAP 代理非常適合此模型。因此,我們還將介紹使用 Docker 和 docker-compose 設定 OpenLDAP 代理的方法。如果您不了解這些公用程式,請先閱讀一些線上資源。
設定 OpenLDAP 代理的步驟如下:
- 建立名為 openldap_proxy 的目錄,您可以選擇任何您想要的名稱。然後進入 openldap_proxy 目錄。
- 建立 Dockerfile 並放入以下內容(這只是一個範例)
# 從授權來源提取基礎映像 FROM centos:7 # 安裝 LDAP Proxy 伺服器所需的套件 RUN yum install openldap openldap-clients openldap-servers -y # 建立必要的目錄 RUN mkdir -p /root/openldap_proxy && \ mkdir -p /root/openldap_proxy/tmp && \ mkdir -p /root/openldap_proxy/data && \ mkdir -p /root/openldap_proxy/data/certs # 移除不需要的目錄 RUN rm -rf /etc/openldap/slapd.d # 將檔案複製到容器 COPY ./start.sh /root/openldap_proxy/start.sh COPY ./slapd.conf /etc/openldap/slapd.conf # 新增執行權限 RUN chmod 755 /root RUN chmod +x /root/openldap_proxy/start.sh # 入口點 ENTRYPOINT ["/root/openldap_proxy/start.sh"]
- 儲存 Dockerfile
- 將 slapd.conf 檔案放入 openldap_proxy 目錄,並在 openldap_proxy 中建立名為 start.sh 的檔案
- 在 start.sh 中,放入以下內容
#!/bin/bash TOPDIR=$(dirname $0) cd $TOPDIR && TOPDIR=$PWD # 如果不存在,則產生憑證 DESTDIR="$TOPDIR/data/certs" APP_FQDN=$(hostname -f) [[ -d $DESTDIR ]] || mkdir -p $DESTDIR APP_GEN_CERT='openssl req -x509 -nodes -days 365 -newkey rsa:2048' APP_GEN_CERT="$APP_GEN_CERT -keyout $DESTDIR/ldap.key -out $DESTDIR/ldap.crt" APP_GEN_CERT="$APP_GEN_CERT -subj '/CN=$APP_FQDN/OU=TestOU/O=Organization/L=Location/ST=State/C=Country'" APP_GEN_CERT="[[ -f $DESTDIR/ldap.crt ]] || $APP_GEN_CERT" eval $APP_GEN_CERT # 執行 docker-compose 指令 exec "$@"
- start.sh 是 Docker 容器的入口點,它將被複製到容器中,並在 Docker 容器啟動時執行。這個指令碼首先會產生一個憑證,如果代理服務 SSL 請求,則會使用該憑證,然後它會將執行處理到傳遞給 start.sh 的指令,該指令將是稍後要建立的 docker-compose.yml 中的 command 選項
- 建立名為 my_openldap_proxy 的 Docker 映像檔。
docker build -t my_openldap_proxy . - 接下來移出 openpldap_proxy 目錄一層(cd ../)
- 建立具有以下內容的 docker-compose.yml 檔案
my_openldap_proxy: image: my_openldap_proxy:latest container_name: my_openldap_proxy ports: - '389:389' - "636:636" volumes: - shared_data:/root/openldap_proxy/data command: bash -l -c "cd /root/openldap_proxy && /usr/sbin/slapd -h 'ldap:/// ldapi:/// ldaps:///' -g ldap -u ldap -d 2"
- 儲存它,然後執行 docker-compose up -d 指令。這個指令如果容器不存在,將會建立容器並以分離模式啟動它。
相當容易的安裝步驟。如果您想要在組態中新增啟用 SSL 的遠端 LDAP 伺服器,則會有一些其他的設定,我們將在未來的文章中說明。敬請期待。