2014-01-28 91 views
2

我們正在通過簽署PowerShell腳本進行第一次嘗試,並且只是想確保我們正確地做到了一切(最佳實踐)。所以我們只是申請了一個來自entrust的EV authenticode代碼簽名證書。簽署PowerShell腳本?

所以在我們在機器上安裝證書(個人證書)並簽署我們需要簽署的任何腳本後,我們將導出證書(不帶私鑰),並通過將證書推送到「受信任的發佈者」容器組策略。說實話,我不知道這一步是必需的,但我使用Scott Hanselman's blog post作爲模板。斯科特用自簽名證書這樣做,所以我不知道這一步是否需要,因爲證書將來自CA,但我不希望用戶第一次嘗試運行時收到錯誤消息一個簽名的腳本。

我們仍然在準備將哪個機器安裝到證書上,但它看起來可能是我們的TFS服務器(已經嚴格控制)。

那麼一切看起來都對嗎?是否有任何需要導出證書(無私鑰),並因爲它不是一個自簽名的證書

編輯每臺PC的「受信任的根證書頒發機構」容器安裝:我想打一個觀察/更正Keith Hill接受的答案。我不認爲他關於不必在用戶PC上安裝證書的說法是正確的(除非您希望他們在首次嘗試運行您簽名的腳本時收到警告消息)。我們剛剛從委託中獲得EV Authenticode證書,並試圖在第一次運行證書時收到以下警告消息:「您是否想從此不受信任的publiser運行軟件?」現在,他們可以選擇「[A]永遠運行」,它將基本上將公鑰添加到證書存儲區,但是如果您不希望它們獲取此警告消息,則應該手動或通過將公鑰添加到「受信任的發佈者」組策略(修復問題)

如果您認爲這是有道理的,如果您不必將公鑰添加到「受信任的發佈者」,那麼任何人(組織外部)都可以訪問代碼簽名證書可以簽署一個PowerShell腳本,該腳本可以被全球運行,並且其執行策略設置爲'AllSigned'。在我的測試中發現的最壞情況是您可以通過回答'[A] Always Run'到上面討論的警告,它將在沒有管理員權限的情況下將公鑰添加到當前用戶的可信發佈者。

回答

2

如果您從DigiCert或Symantec等某個地方獲得EV證書(即一個有信譽的供應商),那麼你就不必在用戶的系統上安裝證書的公鑰。斯科特只是因爲他創建了一個自簽名證書。

順便說一句,將證書安裝到構建機器的證書存儲中肯定比將證書文件檢入版本控制要好。 :-)如果有的話,我們發現它是一個正確的PITA,當我們得到一個更新的證書,必須更新我們仍然構建的所有發佈分支中的文件。這鼓勵我們在構建過程中切換到引用證書存儲中的證書。

+0

感謝您澄清我的一切。 – coding4fun

+0

僅供參考我編輯了上面的問題,以糾正我在您的回答中可能出錯的內容「您不必在用戶的系統上安裝證書公鑰」 – coding4fun

+0

您所看到的是一種「PowerShell」功能,只是問你是否想要信任來自指定供應商的證書。 Certs不保證簽署的軟件只來自好人。 :-)如果您使用EV證書籤署setup.exe或MSI文件,然後通過IE從互聯網下載,您將注意到您不會收到關於不受信任的發佈者的警告。這是我們獲得EV證書來簽署PSCX MSI文件的主要原因。 –