2016-05-13 129 views
1

我是一位開發開源應用程序的新開發人員,我試圖弄清楚如何簽署一個程序。使用簽名證書對代碼進行簽名的過程是什麼?

我明白爲什麼代碼簽名是一件事情,而且我知道如何從CA或單獨獲取證書,但是一旦擁有私鑰,我就找不到解釋實際簽名過程的任何內容。

如何使用簽名證書對代碼進行簽名?具體來說,你是否簽署了源代碼,內置的可執行文件,完全是其他的東西?你是否運行特定的應用程序,或者在代碼中包含某些內容?

相關但獨立的問題:What to do with the code signing certificate?

回答

2

您有一個包含私鑰和公鑰的代碼簽名證書。

您計算加密保存您的代碼和數據的校驗和,用私鑰加密。您將加密校驗和和您的公鑰添加到您的代碼中。

現在任何人都可以計算出你的代碼相同的校驗,解密用公鑰加密校驗,並進行比較。如果它們匹配,那麼證明代碼是由擁有你的私鑰的人提供的。如果它們不匹配,則證明此代碼與加密校驗和的代碼不同。

爲了有用,允許任何應用程序之前先運行操作系統將執行這種測試。公鑰將與OS供應商擁有的衆所周知的私鑰簽署,並可能伴隨可用於識別公鑰所有者的數據。

顯然EvilHacker可以創建惡意軟件和代碼簽名。所以它簽署的事實是沒有意義的。但是你也會擁有EvilHacker的身份,否則操作系統將無法啓動應用程序。所以操作系統永遠不會允許你運行被黑客入侵的應用程序,或者公共所有者對操作系統的創建者不知道的應用程序。

黑客可以成功執行的第二個最糟糕的事情是徹底刪除代碼簽名並給你未簽名的黑客代碼 - 操作系統可能會問你是否要運行未簽名的代碼,或者根本不允許它。

黑客能做的最壞的要麼是精讀操作系統業主接受EvilHacker的代碼簽名證書,或竊取代碼簽名證書,並創建一個真正正確簽名的惡意軟件。

+0

好了,所以,你會運行在你的源代碼校驗,並與encrytped校驗和公鑰一起分發你的src。如果你只想分發一個可執行文件呢? – GreySage