在本文中,我们将了解哪种类型的数字证书在保护用户免于下载和安装受恶意软件感染的应用程序方面发挥着关键作用。我们将探讨此证书的工作原理,并讨论您如何成为值得信赖的开发人员并充分利用它。
什么证书用于签署应用程序?代码签名证书概述
代码签名证书是开发人员和发行商用来声明数字身份并确保其软件和代码完整性的小型数字文件。这对你有什么帮助?答案是通过建立对您的品牌和产品的数字信任,在这个数字转型时代培养您与客户的关系。
代码签名证书保护您的应用程序的完整性,提供额外的安全层。它使用私钥对代码进行签名,并使用公钥来确认其签名。代码签名过程不会帮助您证明您合法地发布了该软件,但它还使用一种称为散列的加密功能为用户提供了一种方式来了解您的软件自您最初签署以来是否被篡改过。
当然,代码签名证书只是 X.509 数字证书的几种类型之一,您可以使用它来提高业务和/或通信的安全性。其他示例包括:
- S/MIME 电子邮件证书。 也称为电子邮件签名证书,这个小型数字文件启用加密电子邮件并允许收件人验证邮件的真实性和发件人的身份。
- SSL/TLS 证书。 该网站安全证书安装在服务器上,可确保服务器和客户端(用户的网络浏览器)之间的加密和安全通信。
- 文档签名证书。 用于对多种类型的文件进行数字签名,它证明签名的文档没有被修改并确认作者的身份。
- 客户端身份验证证书。 通常用于限制对数据库的访问,它会验证个人或设备的身份,以便与 Web 应用程序或其他资源建立安全、加密的连接。
- 物联网设备证书。 它保护连接的设备,确保网络内的防黑客、加密通信,从而保证真实性和数据完整性。
所有这些证书都基于非对称加密并利用公钥基础设施的力量。
代码签名证书支持的平台
代码签名证书支持多种平台,可用于签署桌面应用程序、脚本、移动应用程序(取决于您计划如何分发它们,下一章将详细介绍)和其他可执行文件。
以下是最知名的受支持平台的几个示例:
- 微软Windows。 例如,如果你计划为 Microsoft 10 开发新应用,则可以使用标准和 EV 代码签名证书对其进行签名。
- 苹果操作系统/iOS。 您可以使用 macOS codesign 命令使用传统代码签名证书对 macOS 应用程序进行签名。但是,这样做将需要 Apple 特有的额外步骤,并且还涉及使用 Apple 颁发的证书。(在本文后面了解更多关于 macOS 和 iOS 签名的信息。)
- 微软视觉工作室。 为了能够使用 Visual Studio 开发移动或 Web 应用程序,您还需要拥有有效的代码签名证书。
- 爪哇。 基于 Java 构建的应用程序可以而且应该使用 Java 开发工具包 (JDK) 使用代码签名证书进行签名。
- 土坯。 Air 应用程序只有在由授权 CA 颁发的代码签名证书(标准或 EV,无关紧要)签名时才能工作。
......这些只是几个例子。您可能已经注意到,我们没有提到 Mac OS、iOS 或在特定移动应用程序商店中分发的应用程序。这是因为他们属于我们将在本文后面讨论的特殊群体。
对应用程序进行数字签名的好处(即为什么要使用代码签名证书)
最流行的应用程序商店、官方供应商网站和操作系统需要,或者在某些情况下,至少更喜欢数字签名的应用程序。为什么?因为代码签名有几个好处。让我们从开发人员的角度看一下最重要的:
- 代码签名保护代码的完整性。 当用于签署应用程序的哈希值与下载的应用程序的哈希值不匹配时,用户会收到安全警告。这确保即使是最小的更改,无论是意外(文件损坏)还是故意(黑客攻击)都会被检测到。当然,所有这些都发生在后端,因此用户不必自己浏览密码功能。
- 代码签名证书可验证您的身份并促进信任。 当用户下载使用代码证书签名的应用程序时,有关发布者的组织详细信息将显示为已验证的发布者。用户会立即知道该应用程序是由您而不是其他人开发的,这会促进对您的品牌和产品的信任。
- 帮助您的软件保持符合行业认证标准。当您使用经批准的 CA 颁发的代码签名证书为您的应用程序签名时,您将始终满足美国国家标准技术研究院 (NIST) 和 证书颁发机构浏览器论坛 (CA/浏览器论坛) 定义的行业身份验证标准要求 .
- 代码签名有助于通过更广泛的分发来增加您的收入。 签署他们的应用程序的开发人员可以在更多平台和应用程序商店上分发它们,帮助他们接触更多的受众。这是因为在许多情况下,代码签名已成为能够发布许多主要应用程序商店和平台的先决条件。
- 自动信任最大限度地减少和消除安全警告。 当您使用代码签名证书为您的应用程序和更新签名时,您的客户将享受更加流畅的下载体验。Windows SmartScreen 安全警告要么显示您的已验证身份,要么完全消除警告——这取决于您使用的代码签名证书的类型(我们将在本文后面详细讨论)——因为浏览器和操作系统会自动信任他们。这有助于提高发布者的声誉并增加下载量。
- 现在我们已经了解了使用代码签名证书为您的应用程序签名的主要好处,我们可以继续学习如何使用代码签名证书提高您作为开发人员的声誉和知名度。
成为受信任的开发人员:了解使用什么证书对应用程序进行签名,使您成为受信任的开发人员
在当今的数字世界中,使用证书签署应用程序对于所有希望通过多个平台在 Internet 上安全地分发应用程序的开发人员来说已经变得必不可少。
正如我们之前的一篇文章“什么是数字证书?PKI 数字证书详解》》,市场上有多种类型的数字证书可以满足不同的需求(SSL/TLS、电子邮件签名、文档签名等)。但是,只有一种证书可以满足应用程序和脚本签名的所有要求:代码签名证书。
两种类型的代码签名证书选项可供选择以签署您的公共应用程序
根据安全级别和证书颁发机构验证过程,代码签名证书分为两种特定类型:
标准代码签名证书
此类代码签名证书由证书颁发机构 (CA) 在受信任的机构执行标准开发人员背景调查后颁发。该证书向用户确认应用程序的完整性和供应商的身份。它提供有限的功能。
- 在下载过程中,通常出现在未签名应用程序中的安全警告“Unknown Publisher”被显示开发人员已验证组织详细信息的弹出消息所取代。
- 私钥存储在开发人员的工作站上,而不是服务器上。
- 它使您能够通过时间戳的实施来延长数字签名的生命周期。这样,即使您的证书过期,您也不必重新签署每个应用程序。使用时间戳,您的代码将保持安全,用户甚至不会注意到它。
扩展验证代码签名证书
它也由证书颁发机构 (CA) 颁发,需要更严格的审查过程,但它具有额外的安全功能。
- 它会立即被浏览器和操作系统识别,从而绕过 Windows SmartScreen 警告。
- 它通过双因素身份验证提供增强的安全性,因为私钥存储在外部安全硬件令牌上。
- 与标准代码签名证书非常相似,EV 证书的时间戳通过时间戳的实施延长了数字签名的生命周期,因此,即使在您的证书过期后,您的数字签名应用程序在未来几年内仍然值得信赖。
- 它与所有主要平台兼容。
- 它支持硬件安全模块 (HMS),简化证书管理并允许您组织内的任何授权用户使用它签署应用程序。
由于更高的安全级别和提供的附加功能,扩展验证代码签名证书是迄今为止追求最佳和更安全的客户体验的开发人员的最佳选择。
自签名代码签名证书怎么样?
自签名代码签名证书是您创建并进行数字签名以在开发和测试环境中使用的数字证书。因为它是自签名的并且不是由受信任的第三方(即证书颁发机构)签名的,所以它不会被识别为来自受信任或经过验证的发布者。
许多开发人员和企业很想使用自签名代码签名证书来分发他们的软件或应用程序,认为这将有助于节省资金,因为他们不必购买证书。然而,他们没有意识到的是,从长远来看,最终花费的成本将远远超过证书的简单成本。为什么?
设身处地为您的用户着想:如果您下载了一个应用程序,并且在您尝试安装它时显示如下可怕的安全警报,您会怎么做?
您会停止安装并转到其他地方,对吗?这正是客户下载自签名应用程序时发生的情况。他们可能会被警告吓跑并在别处寻找替代产品(这是他们应该做的!)。结果是:您失去了一位客户,您的声誉也受损了。
因此,虽然自签名代码签名证书可用于测试环境中使用的软件和应用程序(即使在这些情况下,可能会出现一些问题),但它不应该用于签署应用程序或其他可执行文件出售或分发给公众。
Google Play、Apple App Store 和 Mac App Store 例外情况
全球最大的两个应用程序市场Google Play 和 Apple App Store 在谈到应用程序开发时有非常具体的要求和标准。
这意味着如果您想签署可以通过公司网站或移动应用商店销售或分发的移动应用程序,那么您将必须遵循他们的签名流程并使用他们的代码签名证书。
- 谷歌播放。 如果您打算开发一个 Android 应用并在 Google Play 上发布,您需要:
- 创建一个 Google 开发者帐户,以及
- 使用 Google 颁发的特定 开发人员证书为每个应用程序签名。
- 苹果应用商店。 要通过官方 App Store 销售或分发您的 iOS 移动应用程序,您需要先做一些事情:
- 创建一个有效的 Apple Developer Program 帐户,
- 遵循 Apple 的 发布流程 并
- 使用 Apple App Store iOS 分发证书为您的应用程序签名。
- 苹果应用商店。 对于要分发给具有 Gatekeeper 设备的用户的 macOS 应用程序,您必须遵循类似的过程:
- 创建一个 Apple Developer Program 帐户,
- 遵循 Apple 的发布流程,以及
- 使用 Developer ID 证书为您的 Mac 应用程序签名以进行公开分发(在 Mac App Store 之外)。要在 Mac App Store 上发布您的应用程序,请使用 Mac App Distribution 证书对其进行签名。请务必查看 Apple 的 Developer macOS Distribution 页面 和 代码签名指南 以获取更多信息。
现在您已经了解了用于签署应用程序的证书并探索了可用的不同类型的证书,我们可以继续看看代码签名证书的工作原理。
代码签名证书的工作原理及其外观
使用代码签名证书并不复杂。它可以通过 API 轻松集成到开发过程中,从而简化工作流程并简化证书管理过程。
一旦您购买了代码签名证书并将其安装在您选择的平台上(例如,在您的 Windows 设备的 MMC 上或在 Firefox 的证书商店中),您就可以立即开始为您的应用程序签名。数字签名将附加到代码上,将创建哈希函数,并使用私钥对输出进行加密。
因此,当用户下载应用程序时,如果哈希值或签名不匹配,用户将看到弹出的安全警告或错误消息。在某些情况下,根据他们使用的浏览器或操作系统,用户可能还会被完全阻止下载该应用程序。
如果它们匹配,用户将确信您的应用程序是安全的并且未被篡改。他们将能够下载、安装并开始使用它。
您可以在我们最新的文章“什么是代码签名 – 深入了解此安全编码过程”中找到有关代码签名证书体系结构和代码签名签名验证机制的更多详细信息。”
关于使用什么证书对应用程序进行签名的最终想法
代码签名已成为想要保护和推广其应用程序的开发人员和软件发行商的必备工具。它允许作者和完整性验证,使用户和客户相信您是合法的开发人员或发布者,并且知道您的软件自签名后未被更改。考虑到企业和客户越来越依赖软件应用程序,这一点至关重要。
考虑到本文中讨论的所有内容,“什么证书用于签署应用程序?”这个问题的最佳答案。内容如下:如果您想确保应用程序的即时信任、增强安全性和增加下载量,用于对应用程序进行签名的最佳证书是 EV 代码签名证书。
为了成为一名软件开发人员,您付出了太多的努力,全心全意地投入到其他工作中。您应该有机会提高您在客户、同行和组织中的在线声誉!最大限度地降低攻击风险,并通过额外的安全提升让您的应用程序大放异彩!使用代码签名证书保护您的应用程序和您的客户!您的客户会感谢您,并以忠诚度和更多下载量奖励您。