2012-06-21 72 views
4

如果搜索代码签名在网上你会得到命中过多关于哪里去得到一个数字证书签名的代码,但你应该得到签署没有文章或文档时您的代码或为什么这可能是必要的。所以我提出了这些问题:代码签名:何时和为什么?

  • 什么样的用例存在,开发人员或开发团队希望/需要签署他们的代码?
  • 可以/应该签署哪些类型的代码? JavaScript的? Java的? C++?每种语言/平台是否有不同类型的代码签名?
  • 是否将代码签名为原始源代码或已编译的二进制代码?

在此先感谢。

回答

2

我想理论上任何语言的任何代码都可以作为源代码签名,但更常见的是编译后的二进制代码。

我想到的主要用例是移动应用程序(本例为Android)。发布前必须签署代码。您还必须保存密钥存储文件,因此如果您对该应用程序进行了任何更新并希望上传它,请使用相同的密钥对其进行签名。这是因为Android在升级应用程序时会检查很多东西,其中主要的一点是旧代码和新代码的代码签名是相同的,只要密钥存储文件和密码足够保密,证明它来自同一来源。如果有人以某种方式修改代码,则签名验证将失败。

简而言之,签署代码让最终用户/机器知道代码来自哪里。而在升级的情况下,很难/不可能修改代码并让其他人下载它。

苹果公司对iOS的代码签名很疯狂,我没有完全掌握所有的细节,但你必须从苹果公司获得证书(是的超过1),并与他们签约。如果你想把应用程序放在测试设备上,你需要另一个证书来签名并安装到设备上,否则你必须在App Store上获得它(需要获得Apple的批准),他们可能会在某些地方签署它iOS设备知道其Apple认可的私钥。

+0

感谢@Russ(+1) - 您能否想到任何用于代码签名的非移动(和现实世界)应用程序?我觉得像代码签名预先约1英里的现代移动应用热潮。 – IAmYourFaja

0

每次您需要确保代码来自可信来源且没有人修改它时(签名通常带有校验和)。这很常见。编程库,软件分发,软件升级。当您需要申请专利时,您应该对其进行签名并获得可信的时间戳。当您创建一家银行并通过互联网访问它时,您可以通过SSL =将您的网页发送给用户进行加密和签名。并可能还有很多更多

0

开发人员或开发团队希望/需要签署代码的用例存在哪些用例?

数字签名在不同的平台上意味着不同的东西。如果您正在编写Windows桌面软件,那么签署可执行文件最大的好处就是摆脱Windows自从Windows XP SP2以来一直向用户显示的令人讨厌的“未知发布者”警告。在其他平台(一些手机,Java,Flash,Office VBA宏等)签署的代码是必需的,以提升权限。

您可以让Windows程序自行检查自己的数字签名以确保它是有效的,这意味着EXE自签名以来一直没有改变。大多数人使用它作为抵御恶意软件和盗版的另一层保护。

看看这个太: http://blog.ksoftware.net/2011/07/what-is-authenticode/

哪些类型的代码可以/应当签字? JavaScript的? Java的? C++?每种语言/平台是否有不同类型的代码签名?

在理论上有可能以数字方式签署任何文件,但大多数的时候,人们都在谈论他们在谈论MS验证码(附加数字签名,以任何PE格式的文件(代码签名EXE,DLL,COM等)或签名的可执行文件的OSX/iOS版。

有不同类型的签约在不同的平台,但大多数人会使用相同的证书。

签订为原料源或编译的二进制代码?

在大多数情况下,二进制。

相关问题