客戶端主機上安裝filebeat十酣,持久化log到elasticsearch中存儲,過程中遇到問題:
Error dialing x509: certificate signed by unknown authority.
但是internal環(huán)境沒有际长。也就是有的客戶端機器有耸采,有的機器沒有。
原因需要先從https認證過程說起工育。下圖為一次https請求的交互圖虾宇,看不懂自己去網上查查,接下來要在此圖的基礎上解釋問題如绸。
從圖中看到嘱朽,服務器首先會生成一對非對稱加密證書旭贬。公鑰中會存有頒發(fā)機構信息,通過公網傳輸給客戶端搪泳。
然后在客戶端的“驗證合法性這一步”中稀轨,客戶端會去校驗服務器端傳過來的公鑰,具體過程如下岸军。
在客戶端的主機上會有一個truststore記錄著奋刽,當前主機可以信任哪些證書以及頒發(fā)機構。即由這些被信任的機構頒發(fā)的證書才允許被當前主機使用(這理如果客戶端不是一臺主機艰赞,而是一個瀏覽器佣谐,是可以設置成“允許訪問不信任的服務器”)。
發(fā)生標題錯誤的原因就是客戶端主機的truststore中沒有信任服務器證書的頒發(fā)機構方妖。
在當前問題中狭魂,服務器端是一個elasticsearch服務。ES服務本身可以配置當客戶端沒有新人證書的機構時的行為吁断。這里可以去ES官網查趁蕊,不詳述坞生。
那么綜上仔役,解決問題的辦法就是,為客戶端主機重新生成一個CA root(記錄可信任頒發(fā)機構)是己,這個list中添加服務器證書的頒發(fā)機構即可又兵。
注意:如果客戶端主機的list沒有放在默認的路徑下,是需要在filebeat中配置ssl的證書路徑卒废。