| Adobe AIR 1.1 |
|
|
Digitally signing an AIR fileDigitally signing your AIR installation files with a certificate issued by a recognized certification authority (CA) provides significant assurance to your users that the application they are installing has not been accidentally or maliciously altered and identifies you as the signer (publisher). AIR displays the publisher name during installation when the AIR application has been signed with a certificate that is trusted, or which chains to a certificate that is trusted on the installation computer. Otherwise the publisher name is displayed as “Unknown.” Important: A malicious entity could forge an AIR file
with your identity if it somehow obtains your signing keystore file
or discovers your private key.
Information about code-signing certificatesThe security assurances, limitations, and legal obligations involving the use of code-signing certificates are outlined in the Certificate Practice Statements (CPS) and subscriber agreements published by the issuing certification authority. For more information about the agreements for two of the largest certification authorities, refer to: Verisign CPS (http://www.verisign.com/repository/CPS/) Verisign Subscriber’s Agreement (https://www.verisign.com/repository/subscriber/SUBAGR.html) Thawte CPS (http://www.thawte.com/cps/index.html) Thawte Code Signing Developer's Agreement (http://www.thawte.com/ssl-digital-certificates/free-guides-whitepapers/pdf/develcertsign.pdf) About AIR code signingWhen an AIR file is signed, a digital signature is included in the installation file. The signature includes a digest of the package, which is used to verify that the AIR file has not been altered since it was signed, and it includes information about the signing certificate, which is used to verify the publisher identity. AIR uses the public key infrastructure (PKI) supported through the operating system’s certificate store to establish whether a certificate can be trusted. The computer on which an AIR application is installed must either directly trust the certificate used to sign the AIR application, or it must trust a chain of certificates linking the certificate to a trusted certification authority in order for the publisher information to be verified. If an AIR file is signed with a certificate that does not chain to one of the trusted root certificates (and normally this includes all self-signed certificates), then the publisher information cannot be verified. While AIR can determine that the AIR package has not been altered since it was signed, there is no way to know who actually created and signed the file. Note: A user can choose to trust a self-signed certificate
and then any AIR applications signed with the certificate displays
the value of the common name field in the certificate as the publisher
name. AIR does not provide any means for a user to designate a certificate
as trusted. The certificate (not including the private key) must be
provided to the user separately and the user must use one of the
mechani provided by the operating system or an appropriate tool
to import the certificate into the proper location in system certificate
store.
About AIR publisher identifiersAs part of the process of building an AIR file, the AIR Developer Tool (ADT) generates a publisher ID. This is an identifier that is unique to the certificate used to build the AIR file. If you reuse the same certificate for multiple AIR applications, they will have the same publisher ID. The publisher ID is used to identify the AIR application in LocalConnection communication (see Inter-application communication). You can identify the publisher ID of an installed application by reading the NativeApplication.nativeApplication.publisherID property. The following fields are used to compute the publisher ID: Name, CommonName, Surname, GivenName, Initials, GenerationQualifier, DNQualifier, CountryName, localityName, StateOrProvinceName, OrganizationName, OrganizationalUnitName, Title, Email, SerialNumber, DomainComponent, Pseudonym, BusinessCategory, StreetAddress, PostalCode, PostalAddress, DateOfBirth, PlaceOfBirth, Gender, CountryOfCitizenship, CountryOfResidence, and NameAtBirth. If you renew a certificate issued by a certification authority, or regenerate a self-signed certificate, these fields must be the same for the publisher ID to remain the same. In addition, the root certificate of a CA issued certificate and the public key of a self-signed certificate must be the same. About Certificate formatsThe AIR signing tools accept any keystores accessible through the Java Cryptography Architecture (JCA). This includes file-based keystores such as PKCS12-format files (which typically use a .pfx or .p12 file extension), Java .keystore files, PKCS11 hardware keystores, and the system keystores. The keystore formats that ADT can access depend on the version and configuration of the Java runtime used to run ADT. Accessing some types of keystore, such as PKCS11 hardware tokens, may require the installation and configuration of additional software drivers and JCA plug-ins. To sign AIR files, you can use an existing class-3, high assurance code signing certificate or you can obtain a new one. For example, any of the following types of certificate from Verisign or Thawte can be used:
Note: The certificate must be marked
for code signing. You typically cannot use an SSL certificate to
sign AIR files.
Time stampsWhen you sign an AIR file, the packaging tool queries the server of a timestamp authority to obtain an independently verifiable date and time of signing. The time stamp obtained is embedded in the AIR file. As long as the signing certificate is valid at the time of signing, the AIR file can be installed, even after the certificate has expired. On the other hand, if no time stamp is obtained, the AIR file ceases to be installable when the certificate expires or is revoked. By default, the AIR packaging tools obtain a time stamp. However, to allow applications to be packaged when the time-stamp service is unavailable, you can turn time stamping off. Adobe recommends that all publicly distributed AIR files include a time stamp. The default time-stamp authority used by the AIR packaging tools is Geotrust. Obtaining a certificateTo obtain a certificate, you would normally visit the certification authority web site and complete the company’s procurement process. The tools used to produce the keystore file needed by the AIR tools depend on the type of certificate purchased, how the certificate is stored on the receiving computer, and, in some cases, the browser used to obtain the certificate. For example, to obtain and export a Microsoft Authenticode certificate, Verisign or Thawte require you to use Microsoft Internet Explorer. The certificate can then be exported as a .pfx file directly from the Internet Explorer user interface. You can generate a self-signed certificate using the Air Development Tool (ADT) used to package AIR installation files. Some third-party tools can also be used. For instructions on how to generate a self-signed certificate, as well as instructions on signing an AIR file, see Packaging an AIR installation file using the AIR Developer Tool (ADT). You can also export and sign AIR files using Flex Builder, Dreamweaver, and the AIR update for Flash. The following example describes how to obtain an AIR Developer Certificate from the Thawte Certification Authority and prepare it for use with ADT. This example illustrates only one of the many ways to obtain and prepare a code signing certificate for use. Example: Getting an AIR Developer Certificate from ThawteTo purchase an AIR Developer Certificate, the Thawte web site requires you to use the Mozilla Firefox browser. The private key for the certificate is stored within the browser’s keystore. Ensure that the Firefox keystore is secured with a master password and that the computer itself is physically secure. (You can export and remove the certificate and private key from the browser keystore once the procurement process is complete.) As part of the certificate enrollment process a private/public key pair is generated. The private key is automatically stored within the Firefox keystore. You must use the same computer and browser to both request and retrieve the certificate from Thawte’s web site.
Important: The private key and certificate are still
stored within the Firefox keystore. While this permits you to export
an additional copy of the certificate file, it also provides another
point of access that must be protected to maintain the security
of your certificate and private key.
Changing certificatesIn some circumstances, you may need to change the certificate you use to sign your AIR application. Such circumstances include:
Because the signing certificate is one of the elements that determines the identity of an AIR application, you cannot simply sign an update to your application with a different certificate. For AIR to recognize an AIR file as an update, you must sign both the original and any updated AIR files with the same certificate. Otherwise, AIR installs the new AIR file as a separate application instead of updating the existing installation. As of AIR 1.1, you can change the signing certificate of an application using a migration signature. A migration signature is a second signature applied to the update AIR file. The migration signature uses the original certificate, which establishes that the signer is the original publisher of the application. Important: The certificate must
be changed before the original certificate expires or is revoked.
If you do not create an update signed with a migration signature
before your certificate expires, users will have to uninstall their
existing version of your application before installing any updates.
Commercially-issued certificates can typically be renewed to avoid
expiration. Self-signed certificates cannot be renewed.
To change certificates:
The procedure for applying a migration signature is described in Signing an AIR file to change the application certificate. When the updated AIR file is installed, the identity of the application changes. This identity change has the following repercussions:
It is the responsibility of your application to migrate any data between the original and the new versions of the application. To migrate data in the encrypted local store (ELS), you must export the data before the change in certificate takes place. It is impossible for the new version of your application to read the ELS of the old version. (It is often easier just to re-create the data than to migrate it.) You should continue to apply the migration signature to as many subsequent updates as possible. Otherwise, users who have not yet upgraded from the original must either install an intermediate, migration version or uninstall their current version before they can install your latest update. Eventually, of course, the original certificate will expire and you will no longer be able to apply a migration signature. (However, unless you disable time stamping, AIR files previously signed with a migration signature will remain valid. The migration signature is time stamped to allow AIR to accept the signature even after the certificate expires.) An AIR file with a migration signature is, in other respects,
a normal AIR file. If the application is installed on a system without
the original version, AIR installs the new version in the usual
manner.
Note: You do not typically have to migrate the certificate
when you renew a commercially issued certificate. A renewed certificate
retains the same publisher identity as the original unless the distinguished
name has changed. For a full list of the certificate attributes
that are used to determine the distinguished name, see About AIR publisher identifiers.
TerminologyThis section provides a glossary of some of the key terminology you should understand when making decisions about how to sign your application for public distribution.
|