Cinder對接netapp使用ssl認證

Cinder對接netapp存儲使用https協(xié)議時,c-vol.log日志里會提示[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed,這是因為https會做ssl認證。對于這個問題,網絡上常見的解法是修改驅動代碼,繞過ssl:在文件 volume/drivers/netapp/dataontap/client/api.py 添加
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

另外則是使用工具生成自簽名證書,導入到cinder服務器和netapp服務器上。Netapp現在能支持單向驗證和雙向驗證兩種模式,用配置項可以控制。

圖片.png
圖片.png

這里我們討論單向驗證。步驟如下:
一、創(chuàng)建根證書CA

  1. 我們要用到easy-rsa工具。安裝指令:
    Ubuntu:sudo apt-get –y install easy-rsa
    Centos:sudo yum install easy-rsa
  2. 進入root模式:sudo –i
  3. [root@localhost ~]# cd /usr/share/easy-rsa/2.0/
  4. [root@localhost 2.0]# . vars
  5. *[root@localhost 2.0]# ./build-ca *
    這一步按照提示輸入,全部回車使用默認值即可,但是Common Name要填寫netapp SVM的ip地址。如下:
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:172.24.3.25
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:
  1. 生成Diffie-Hellman參數
[root@localhost 2.0]# ./build-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............................................................++*++*

二、創(chuàng)建SVM服務端證書和私鑰。Netapp上每個SVM都有對應的證書。Netapp應該是根據我們登錄動作用到的ip、用戶名來判斷要管理哪個svm,進而使用哪個對應的證書。我們登錄netapp管理頁面,用到的用戶名admin是集群管理員,對應netapp2650這個svm,用到的證書就是是netapp2650的證書。
創(chuàng)建步驟如下:

  1. [root@localhost 2.0]# ./build-key-server 172.24.3.25

172.24.3.25是服務端ip。這一步按照提示輸入,全部回車使用默認值即可,但是Common Name要填寫netapp主機的ip地址。如下:

Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [Fort-Funston]:
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:
Common Name (eg, your name or your server's hostname) [172.24.3.25]:172.24.3.25
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

注意:這里可能會創(chuàng)建失敗提示failed to update database TXT_DB error number 2,這是因為之前已經生成過同名的證書的了,可以執(zhí)行./clean-all清除,然后從第一步再做一遍。

  1. 檢查keys目錄是否有172.24.3.25.crt、172.24.3.25.key、ca.crt三個文件。
    172.24.3.25.crt是服務器證書,172.24.3.25.key是服務器私鑰,ca.crt是根證書。
  2. 補充:創(chuàng)建客戶端證書的指令,使用單向驗證的時候請?zhí)^此步驟。
    [root@localhost 2.0]# ./build-key 172.24.2.105
    172.24.2.105是客戶端ip。

三、安裝根證書在cinder服務器上,并加入信任列表

  1. 要使用工具ca-certificates
    Centos:sudo yum install ca-certificates
    Ubuntu:
  2. 把上面生成的ca.crt復制到目錄/etc/pki/ca-trust/source/anchors/
  3. 執(zhí)行指令 update-ca-trust 即安裝成功。這條指令不會打印執(zhí)行結果,我們可以查看/etc/pki/tls/certs/ca-bundle.crt這個文件里是否已經添加了ca.crt的內容。
    comm -1 /etc/pki/tls/certs/ca-bundle.crt /usr/share/easy-rsa/2.0/keys/ca.crt
圖片.png

備注:

comm 命令參數
-1 不顯示只在第1個文件里出現過的列。
-2 不顯示只在第2個文件里出現過的列。
-3 不顯示只在第1和第2個文件里出現過的列。

四、將服務器證書、服務器私鑰和根證書導入到netapp svm

  1. 用admin用戶ssh連接到netapp集群管理的命令行界面上。
    [root@localhost 2.0]# ssh admin@172.24.2.50

  2. 查看svm的證書。
    NetApp2650::> security certificate show -vserver wy_fc_svm_test

  3. 刪除svm的證書。
    NetApp2650::> security certificate delete -vserver wy_fc_svm_test *

  4. 導入證書
    NetApp2650::> security certificate install -vserver wy_fc_svm_test -type server
    提示Please enter Certificate: Press <Enter> when done,這里輸入之前生成的服務器證書172.24.3.25.crt里的內容,從-----BEGIN CERTIFICATE----- 到-----END CERTIFICATE-----。
    如:

圖片.png

Please enter Private Key: Press <Enter> when done,這里輸入之前生成的服務器私鑰172.24.3.25.key里的內容,從-----BEGIN CERTIFICATE----- 到-----END CERTIFICATE-----。
如:

圖片.png

Do you want to continue entering root and/or intermediate certificates {y|n}: y
Please enter Intermediate Certificate: Press <Enter> when done
這里輸入根證書ca.crt里的內容。如下:

圖片.png
  1. 使導入證書生效
    NetApp2650::> security ssl modify -vserver wy_fc_svm_test -server-enabled true -common-name 172.24.3.25 -ca 172.24.3.25 -serial 02
    這里的-common-name、-ca、-serial可以敲擊tab按鍵自動填入。
圖片.png

6.導入客戶端證書,如使用單向驗證,請忽略此步。
NetApp2650::> security certificate install -vserver NetApp2650 -type client-ca

圖片.png

開啟客戶端驗證,使客戶端證書生效。
NetApp2650::> security ssl modify -client-enabled true -vserver NetApp2650 -common-name 172.24.2.50 -ca 172.24.2.50 -serial 01

五、使用openssl工具測試https,看證書是否導入成功。
[root@localhost ~]# openssl s_client -connect 172.24.3.25:443 -CApath /etc/pki/ca-trust/source/anchors/ca.crt

圖片.png

抓包分析tcpdump -s0 -w net4.pcap -i enp8s0f0 host 172.24.2.105

圖片.png

SSL雙向驗證報文分析可以閱讀這篇博客http://blog.csdn.net/fw0124/article/details/40983787

NetApp CLI 指令簡單補充
上面的操作步驟已經介紹了幾個常用指令,這里我再說幾個相關知識。
登錄Data ONTAP 命令行界面 (CLI) ,你可以使用命令行管理 Storage Virtual Machine (SVM)。命令行界面提供了與 UNIX tcsh Shell 相似的基于命令的管理機制。您可在存儲系統(tǒng)提示符處輸入命令,而命令結果將以文本顯示。命令行界面的命令提示符顯示為vserver_name::>。

  1. 命令行界面中的命令按命令目錄組織成層次結構。您可以通過輸入完整命令在若干個命令目錄中導航。例如,您可以通過在提示符處輸入volume show命令來顯示有關卷的信息。您也可以一次瀏覽一個命令目錄來運行命令,如:
圖片.png
  1. 問號(“?”)用于顯示幫助信息的命令。
    如:
圖片.png
  1. 您可以使用top命令轉到命令層次結構的頂級,以及使用up命令或..命令轉到命令層次結構中的上一級。
  2. 每個命令行界面會話都會保留一份在會話期間發(fā)出的所有命令的歷史記錄。使用history命令查看命令歷史記錄。使用redo命令重新執(zhí)行命令,如可使用redo 4命令重新發(fā)出歷史記錄列表中的第四個命令;使用redo -2命令重新發(fā)出在運行兩個命令之前運行的命令。
  3. 查看有關 SVM 的基本信息NetApp2650::> vserver show
    查看有關 SVM 的詳細信息NetApp2650::> vserver show -instance
  4. 查看 SVM 的 LIF 用 network interface show
圖片.png

這里我僅僅簡單介紹下netapp cli指令,其他詳細指令請查詢:
《集群模式 Data ONTAP 8.3 SVM 管理員系統(tǒng)管理指南》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容