2015-02-11 85 views
0

通過我們的廚師安裝(12.0.3),我們從內部專用CA安裝了新的SSL證書。然而,一旦我們安裝了證書,我們現在試圖引導新節點時,遇到下列錯誤,例如:使用自定義SSL證書引導廚師節點

C:\ws\devops\chef\cookbooks>knife bootstrap windows winrm WIN-e9073a7mffd.mydomain.local -N CHEF_TEST_DELETE_ME -x administrator -P password -r "recipe[test]" 


WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:14+00:00] INFO: *** Chef 12.0.3 *** 
WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:14+00:00] INFO: Chef-client pid: 1644 
WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:21+00:00] INFO: Client key c:/chef/client.pem is not present - registering 
WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:21+00:00] ERROR: SSL Validation failure connecting to host: chef.mydomain.local - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed 
WIN-e9073a7mffd.mydomain.local 
WIN-e9073a7mffd.mydomain.local  ================================================================================ 
WIN-e9073a7mffd.mydomain.local Chef encountered an error attempting to create the client "CHEF_TEST_DELETE_ME" 
WIN-e9073a7mffd.mydomain.local  ================================================================================ 
WIN-e9073a7mffd.mydomain.local 
WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:21+00:00] FATAL: Stacktrace dumped to c:/chef/cache/chef-stacktrace.out 
WIN-e9073a7mffd.mydomain.local [2015-02-11T17:45:21+00:00] FATAL: NoMethodError: undefined method `run_id' for nil:NilClass 
ERROR: Failed to execute command on WIN-e9073a7mffd.mydomain.local return code 1 

如果我手動添加證書,爲我們的CA爲/opscode/chef/embedded/ssl/certs/cacert.pem文件,則服務器將允許後續引導嘗試。

有關如何解決這個問題的任何想法,以便在第一次嘗試時正確引導節點?

回答

0

要解決這個問題,你有一些選擇。

  • 您的CA證書添加到trusted_certs目錄(見this doc

  • ssl_verify_mode在你knife.rb :verify_none(第一次運行成功的client.rb應該從它做)然後分發更新cacert.pem,並與廚師itslef管理目標client.rb(chef_client食譜有這個食譜)

+0

我有放置在工作站的trusted_certs目錄中的CA和Chef服務器的證書文件,但是在啓動時,這些證書不會被複制到客戶端。我將嘗試設置ssl_verify_mode以查看這是否能解決問題,但說實話,似乎更多的是黑客攻擊,因爲必須在每個工作站上設置模式。如果可能,我更喜歡一次性修復。 – dthagard 2015-02-12 13:47:22

+0

如果還沒有一個,可以在github上購買一張票。 – Tensibai 2015-02-12 13:49:43

+1

要清楚,即使手動將文件手動複製到客戶端也不起作用。如果我執行'ssl fetch https://chef.mydomain.local'並手動安裝CA證書,那麼後續運行'knife ssl check https://chef.mydomain.local'會傳遞。但是,來自工作站的bootstrap命令仍然失敗,並顯示'錯誤:連接到主機的SSL驗證失敗:chef.mydomain.local - SSL_connect返回= 1 errno = 0狀態= SSLv3讀取服務器證書B:證書驗證失敗'我將添加根據您的建議GitHub的機票。謝謝您的幫助! – dthagard 2015-02-12 13:54:45

0

你檢查之間的時間同步節點和廚師服務器? SSL期望時鐘非常接近,並且產生的錯誤可能看起來相同。

+0

感謝您的回覆。客戶端和Chef服務器都使用相同的內部NTP服務器並具有相同的日期/時間。在這一點上,我相當確信這是12.0.3廚師客戶端處理私有CA和複製trusted_certs的一個錯誤。我更改了服務器名稱,以便使用Thawte發佈的通配符證書,問題就消失了。 – dthagard 2015-02-13 14:41:00