2011-07-03 81 views
33

我試圖找到是否啓用了SSL的中央存儲庫,但可能沒有。我注意到maven中央倉庫中的每個jar和pom文件都有簽名。所以至少我想檢查所有maven下載文件的簽名(pom/jar)。Maven驗證下載的pom/jar文件的簽名

的例子來自http://repo1.maven.org/maven2/org/apache/ant/ant/1.8.2/

ant-1.8.2.jar 
ant-1.8.2.jar.asc 
ant-1.8.2.jar.asc.md5 
ant-1.8.2.jar.asc.sha1 
ant-1.8.2.jar.md5 
ant-1.8.2.jar.sha1 
ant-1.8.2.pom 
ant-1.8.2.pom.asc 
ant-1.8.2.pom.asc.md5 
ant-1.8.2.pom.asc.sha1 
ant-1.8.2.pom.md5 
ant-1.8.2.pom.sha1 

我意識到,我必須導入公共密鑰對每個存儲庫和我很好這一點。我猜中文maven central的公鑰在這裏https://svn.apache.org/repos/asf/maven/project/KEYS

網上有很多關於如何用maven簽名的教程。但是我沒有找到關於如何強制maven(2或3)來驗證下載的jar/pom文件的簽名的任何信息。可能嗎?

(的Nexus專業是不是一種選擇)

謝謝你的幫助。

+0

每個工件與個人上傳的密鑰簽名,所以我不知道鑰匙將包含這些內容。當註冊例如與Sonatype OSS服務器一樣,上傳器的PGP密鑰也不存在任何階段。也就是說,我也想要這個答案。 –

+1

[MNG-2477](http://jira.codehaus.org/browse/MNG-2477)是將此功能添加到Maven的(當前未決)問題。 – Joe

+0

你在使用Artifactory還是這樣的一些?這是一個選擇嗎? 查看插件:http://www.jfrog.com/home/v_artifactorypro_features#addon-webstart – Pmt

回答

1

假設您只想下載具有有效校驗和的工件,則一種選擇是運行Nexus的OSS版本並將其配置爲具有中央代理。然後將您的settings.xml配置爲僅從您的repo(settings.xml中的鏡像標記)加載。然後,您可以將nexus配置爲僅允許具有有效校驗和的工件。

+1

* .asc文件是PGP簽名。 – Barend

1

對Central的SSL訪問現在可用於令牌付款。 From https://blog.sonatype.com/people/2012/10/now-available-ssl-connectivity-to-central/

無論存儲庫管理器如何,我們都可以向所有下載開放源代碼組件的人提供SSL連接。

...

爲了保證性能對於那些誰在SSL算的最高水平,我們確保與令牌服務。只需提供捐贈10美元的捐款,即可爲您的組織獲得一個令牌,以捐贈給開源事業。

+2

這是/是正確的,但現在已過時。請參閱Sonatype的公告:http://blog.sonatype.com/2014/07/ssl_connectivity_for_central/ –

1

你能用GnuPG編寫一個bash shell腳本來驗證每個sig嗎?

喜歡的東西: for x in *.jar; do gpg --verify "${x}".asc; done

很明顯,你需要的公共密鑰對所有SIGS你開始之前。

+0

您還需要獲取簽名,因爲它們通常不在您的回購中。 –

5

現在,人們似乎意識到這是一個真正的安全問題(如this blog-post(博客似乎下來,這裏是一個archived version的博客)),有一個plugin for verifying PGP signatures。您可以驗證簽名使用以下命令你的項目的所有依存關係:

mvn com.github.s4u.plugins:pgpverify-maven-plugin:check 

當然是100%肯定該插件本身不是惡意的,你就必須下載和驗證從行家的source for the plugin中央,用maven構建它,然後執行它。 (這也應該用遞歸構建所需的所有依賴和插件來完成)。

或者您使用Maven 3.2.3或更高版本(使用乾淨的存儲庫),它使用SSL下載所有工件。因此,中間人攻擊是不可能的,你至少會得到這些僞裝,因爲它們在maven中心。

參見: