presto中ldaps配置完整流程

  最近開始轉戰presto,至於前面章節中的Hbase,我也會持續更新,喜歡個人能夠關注我。關於這個流程,我看過阿里雲的的一篇文章,但看後仍是不知所云,就寫下了這篇博客,你們感興趣的能夠訪問那篇文章—— https://yq.aliyun.com/articles/670066
  閒話不說,讓咱們來到正題。今天,咱們要分四個內容要講——一.keytool生成ssl協議須要的相關文件 二.基於OpenSSL自建CA和頒發SSL證書 三.ldaps服務器搭建 四.presto-ldap插件啓用,以及如何使用客戶端訪問。(另外,簡單說一下這裏的環境,其中ldaps是搭建在linux上的,而其餘的組件是搭建在我本機mac上的)
  一.keytool生成ssl協議須要的相關文件
  1.建立證書
  keytool -genkey -v -keystore presto-private.keystore -alias presto-private -keyalg RSA -dname "CN=localhost, OU=, O=, L=, ST=, C=CN" -validity 20000 -keypass fvsord -storepass fvsord
  這裏的-dname選項要求填不少,其實真正要填的只有Common Name,一般填寫你服務器的域名,或者你服務器的IP地址(localhost),其它均可以留空的.
  2.導出證書,由客戶端安裝
  keytool -export -alias presto-private -keystore presto-private.keystore -file presto-public.cer -storepass fvsord
  3.客戶端配置:(這裏的alias沒必要與上面的一致)
  keytool -import -alias presto-public -file presto-public.cer -keystore presto-public.store -storepass fvsord
  4.能夠經過下面的命令查看簽名信息
  keytool -v -list -keystore /usr/local/keystores/test/presto-test.keystore
  關於keytool中各個選項的詳解,我在這裏就再也不詳細介紹了,畢竟,咱們這一節的內容是presto中的ldaps。
  二.基於OpenSSL自建CA和頒發SSL證書(linux默認已經安裝了openssl,所以我在這裏假設已經安裝好openssl)
  1.在linux中默認的CA路徑是/etc/pki/CA,關於該路徑,咱們能夠在vi /etc/pki/tls/openssl.cnf中看到,以下圖所示:   默認安裝的opnessl可能並無其中的一些文件(夾),須要咱們本身來建立。
  2.在上面的文件中,咱們要注意其中在[ policy_match ]中的設定的匹配規則,這裏匹配規則與咱們後面要生成的csr有關係。其實也就是在第一部分中講到的-dname 選項中的各個條目。
  在CA目錄下建立兩個文件:
  touch index.txt serial
  echo 00 > serial
  3.生成根密鑰(來到/etc/pki/CA目錄)
  cd /etc/pki/CA/
  openssl genrsa -out private/cakey.pem 2048
  4.生成根證書
  使用req命令生成自簽證書:
  openssl req -new -x509 -key private/cakey.pem -out cacert.pem
  這裏會輸入一些內容,與咱們上面使用keytool建立證書是輸入的內容大體同樣,這裏咱們一樣只關注Common Name。
  5.接下來,咱們就能夠爲咱們的ldap服務器生成ssl密鑰(這裏生成的密鑰能夠在ldap服務器上,也能夠在上面的CA服務器上。假設咱們在上面的CA服務器上生成密鑰,另外,咱們在 /usrl/local/CA目錄下生成ssl密鑰)
  cd /usrl/local/CA
  openssl genrsa -out ldap.key
  6.爲ldap生成證書籤署請求
  openssl req -new -key ldap.key -out ldap.csr
  7.ca根據請求籤發證書,獲得.crt證書文件
  openssl x509 -req -in ldap.csr -CA /etc/pki/CA/cacert.pem -CAkey /etc/pki/CA/private/cakey.pem -CAcreateserial -out ldap.crt
  這裏生成的證書爲咱們後面的ldap服務器的搭建作前提準備。
  三.ldaps服務器搭建(以linux爲例)
  1.安裝ldap
    yum install -y openldap*
  2.在網上看到上面安裝後會有/usr/share/openldap-servers/slapd.conf.obsolete文件,而我在新版的Linux環境中安裝屢次後並無找到該文件。每每須要咱們本身手動完成,如下是測試經過的完整版本。
  =================================================
  include /etc/openldap/schema/corba.schema
  include /etc/openldap/schema/core.schema
  include /etc/openldap/schema/cosine.schema
  include /etc/openldap/schema/duaconf.schema
  include /etc/openldap/schema/dyngroup.schema
  include /etc/openldap/schema/inetorgperson.schema
  include /etc/openldap/schema/java.schema
  include /etc/openldap/schema/misc.schema
  include /etc/openldap/schema/nis.schema
  include /etc/openldap/schema/openldap.schema
  include /etc/openldap/schema/ppolicy.schema
  include /etc/openldap/schema/collective.schema
  access to *
    by self write
    by anonymous auth
    by * read
  pidfile /var/run/openldap/slapd.pid
  argsfile /var/run/openldap/slapd.args
  database bdb
  suffix "dc=fly,dc=com"
  rootdn "cn=sky,dc=fly,dc=com"
  TLSCACertificateFile /etc/pki/CA/cacert.pem
  TLSCertificateFile /usrl/local/CA/ldap.crt
  TLSCertificateKeyFile /usrl/local/CA/ldap.key
  TLSVerifyClient never
  # Cleartext passwords, especially for the rootdn, should
  # be avoid. See slappasswd(8) and slapd.conf(5) for details.
  # Use of strong authentication encouraged.
  rootpw {SSHA}YgXdmGu8hrIE10JMEhkW6p2QBfPF+62J
  # The database directory MUST exist prior to running slapd AND
  # should only be accessible by the slapd and slap tools.
  # Mode 700 recommended.
  directory /var/lib/ldap
  # Indices to maintain
  index objectClass eq
  =================================================
  3.設置管理員密碼
  slappasswd
  鍵入新密碼後,會彈出生成的密碼。咱們將其粘到上面文件的rootpw後面,其間使用Tab鍵分隔。
  4.修改slapd.conf 核心配置
  database bdb
  suffix "dc=fly,dc=com"
  rootdn "cn=sky,dc=fly,dc=com"
  rootpw {SSHA}YgXdmGu8hrIE10JMEhkW6p2QBfPF+62J
  5.修改slapd.conf 權限配置
  access to *
         by self write
         by anonymous auth
         by * read
  6.添加ssl認證
  TLSCACertificateFile /etc/pki/CA/cacert.pem
  TLSCertificateFile /usrl/local/CA/ldap.crt
  TLSCertificateKeyFile /usrl/local/CA/ldap.key
  TLSVerifyClient never
  7.檢測配置是否正確
  slaptest -u
  8.配置數據庫
   cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  9.刪除默認內容
   rm -rf /etc/openldap/slapd.d/*
  10.啓動ldap
  /usr/sbin/slapd -h 'ldaps://192.168.0.76:636/' -f /etc/openldap/slapd.conf -d 255
  11.狀態查看:
  systemctl status slapd.service
  12.使用客戶端驗證
  咱們這裏的默認路徑是/etc/openldap/ldap.conf
  咱們須要在最後添加
  TLS_CACERT /etc/pki/CA/cacert.pem
  而後,咱們能夠執行一下操做來驗證咱們是否安裝好ldaps服務器:
  ldapsearch -x -b "cn=sky,dc=fly,dc=com" -H ldaps://192.168.0.76:636
  若是沒有報異常,則ldaps服務安裝成功。
  四.presto-ldap插件啓用
  presto中若是啓動了ssl認證,則一樣要求啓動ldaps認證。
  對於啓動ssl認證,咱們須要在etc/config.properties這樣配置:
  另外,咱們須要在etc/password-authenticator.properties文件中這樣配置:
  password-authenticator.name=ldap
  ldap.url=ldaps://192.168.0.76:636
  ldap.user-bind-pattern=cn=sky,dc=fly,dc=com
  若是僅僅是上面的配置,仍是不夠,一般會報。由於咱們並無將ldaps的客戶端證書添加到咱們的presto相關文件中。
  其實一開始我覺得是要將ldaps中的文件(/usrl/local/CA/ldap.key或/etc/pki/CA/cacert.pem皆可)導入到上面配置的/usr/local/keystores/for-presto/presto-private.keystore中。但一直報上面的錯,後來我追蹤了源碼,發現其就是使用jdk中的證書,因此,這裏,咱們應該將其中的證書添加到jdk中。這裏我要執行的操做是:
sudo keytool -delete -alias ldap-remote-server -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit(更正爲:sudo keytool -import -file /etc/pki/CA/cacert.pem -alias ldap-remote-server -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit)
  至此,就安裝成功了,若是有問題,能夠在下面留言。
相關文章
相關標籤/搜索