簡體   English   中英

設置SOLR SSL屬性

[英]Setting SOLR SSL properties

當我使用提供的Apache SOLR啟動腳本(版本6.6.0)時,該腳本創建並執行一個Java命令行,該命令行具有兩組SSL屬性,其相關元素設置為相同的值。 一組具有類似於javax.net.ssl.*名稱,而另一組具有諸如solr.jetty.*名稱。 例如:

 java -server ... -Dsolr.jetty.keystore.password=secret ... -Djavax.net.ssl.keyStorePassword=secret ... ... -jar start.jar --module=https 

我們的安全團隊不允許在命令行或環境變量中傳遞密碼,但允許將其放置在文件中,前提是該文件具有受限的訪問權限。 我注意到solr/server/etc目錄中有一個jetty-ssl.xml文件,可用於為所有solr.jetty.*屬性(包括solr.jetty.keystore.password提供默認值。 當我從Java命令行中刪除所有javax.net.ssl.keyStorePasswordsolr.jetty.keystore.password屬性,並使用我的密鑰庫密碼更新jetty-ssl.xml文件時,SOLR似乎從包含的默認密鑰庫密碼開始在那個文件中。 然后,我可以使用瀏覽器連接到https://localhost:8983/solr/#並訪問SOLR Admin頁面。

SOLR獨立產品或SOLR雲產品中是否使用過javax.net.ssl.*屬性? 它們是否在瀏覽器之外的后台用於SOLR服務器連接,以連接到其他進程(如zookeeper)? 我可以在源代碼中看到它們的唯一參考是solrj客戶端中包含的solr嵌入式代碼。

是的,solr.jetty服務器端和javax.net.ssl。*客戶端屬性都被SOLR使用。 對於某些操作(例如集合創建),SOLR似乎會自行連接,當它這樣做時,它將嘗試通過SSL與javax.net.ssl。*屬性值進行連接。

為了避免在命令行或環境變量中傳遞屬性,我想到的解決方案是創建一個僅具有premain方法的javaagent類。 在start.jar中main之前運行的premain方法中,我讀取了一個包含“秘密” SSL屬性的屬性文件,例如javax.net.ssl.keyStorePassword。 然后,代理將該鍵/值添加到Java System屬性中。

因此,當main啟動時,所有SSL屬性都是已知的,並且尚未暴露給命令行或環境變量。 顯然,為了維護安全性,必須限制對屬性文件的所有權和權限。 可以將以下內容添加到SOLR Java命令行中,以確保代理程序運行並可以作為參數訪問屬性文件:

java -javaagent:ssl-agent.jar=/path/to/ssl/properties/file ... -jar start.jar ... 

有關編寫Java代理的信息,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM