如何導入一個定製的CA證書嗎

學習如何定製CA證書導入到磚集群使用Python。

寫的arjun.kaimaparambilrajan

去年發表在:2022年5月19日

使用Python時,您可能想要導入一個定製的CA證書,以避免端點連接錯誤。

ConnectionError: HTTPSConnectionPool(主機= my_server_endpoint,端口= 443):馬克斯重試超過url: /端點(NewConnectionError (“< urllib3.connection所致。VerifiedHTTPSConnection對象在0 x7fb73dc3b3d0 >:未能建立一個新的連接:[Errno 110]連接超時”,)

導入一個或多個自定義CA證書磚集群:

  1. 創建一個init腳本,增加了整個CA鏈和設置REQUESTS_CA_BUNDLE屬性。

    在這個例子中,PEM格式myca CA證書添加到文件。crt,位於/ user /地方/分享/ ca證書/。這個文件是custom-cert中引用。sh init腳本。

    % sh dbutils.fs.put(“/磚/ init腳本/ custom-cert。sh”、“”“# !/bin/bash貓< <“EOF”> /usr/local/share/ca-certificates / myca。crt - - - - - - - - - - -開始證書< CA鏈1證書內容> - - - - - - - - - - - - - - - -端證書開始證書- - - - - - < CA證書鏈2內容> - - - - - - - - - - -端證書EOF update-ca-certificates PEM_FILE = " / etc / ssl /證書/ myca。pem”密碼= " <密碼> " JAVA_HOME = $(指向- f /usr/bin/java | sed“年代:bin / java::”)密鑰庫= " $ JAVA_HOME / lib /安全/ cacerts”確實的事情= $ (grep“證書終結”PEM_FILE美元| wc - l) #與keytool處理多個證書,你需要從pem中提取#每一個文件並將其導入java KEYSTORE。對N (seq 0美元(($確實的事情- 1)));做別名= " (basename PEM_FILE美元)- N”美元回聲“美元增加密鑰別名:別名”貓PEM_FILE美元| awk“N = = ${打印};/證書/ {n + +}”| keytool -noprompt進口-trustcacerts \別名別名KEYSTORE KEYSTORE美元對於storepass密碼做呼應“美元出口REQUESTS_CA_BUNDLE = / etc / ssl /證書/ ca證書。crt " > > /磚/ / conf / spark-env火花。sh”“”)

    使用定製CA證書DBFS保險絲(AWS|Azure|GCP),加上這條線的底部你的init腳本:

    /磚/ /腳本/ restart_dbfs_fuse_daemon.sh火花
  2. init腳本附加到集群作為集群級init腳本(AWS|Azure|GCP)。
  3. 重新啟動集群。