2013-10-03 36 views
2

如何從給定的url獲取根文件夾以及任何中間文件?理想情況下,通過一些與linux外殼兼容的命令行, ,但手動會做,如果我必須。 更新:使用Chrome以交互方式,如果我檢查證書,則可以選擇將其導出。如果適用,有一種方法可以獲得整個鏈條。所以現在我只是在尋找一種腳本化的方法。將SSL證書和中間文件從給定的https URL導出到文件

背景:

mono nuget.exe install ./packages.config -o ./packages 

將在Ubuntu安裝項目包,只要required certificates are installined in the machine's Trust store。在某種程度上,它的工作是這樣的:

$ certmgr -ssl https://nugetgallery.blob.core.windows.net 

此命令,與-ssl選項,抓住證書,並從指定的URL的中間產物,並要求用戶確認。我試圖自動化服務器版本,所以我希望在不需要用戶確認的情況下添加證書。

我已經試過管道響應進入命令 - 即:

$ echo "Yes" | certmgr -ssl https://nugetgallery.blob.core.windows.net 

這是行不通的。我試圖將certficates導出到一個文件,所以我可以將它們添加到我的構建項目中,但mono certmgr尚未實現'put'。

+0

也許這可以幫助:http://stackoverflow.com/questions/14773904/perl-script-for-showing-ssl-certs –

+1

謝謝。這讓我指出了正確的方向。 perl mod是openssl的一個包裝 - 我已經安裝了。使用OpenSSL作爲搜索詞讓我這樣回答:http://stackoverflow.com/a/16797458/149060 - 看起來很有前途。 –

回答

2

安裝假設OpenSSL的,此命令行:

echo | openssl s_client \ 
    -showcerts \ 
    -connect nugetgallery.blob.core.windows.net:443 2>&1 | 
     sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > cert.pem 

產生含有參與該鏈中的所有三個證書的文件。

感謝this answer這個問題:Using openssl to get the certificate from a server爲解決方案獲得鏈。以下命令將獲取已加載到Trust存儲中的已保存證書。

openssl crl2pkcs7 -nocrl -certfile cert.pem -out cert.p7b 
certmgr -add -c -m Trust ./cert.p7b