JavaScript is required to for searching.
Ignorar Links de Navegao
Sair do Modo de Exibio de Impresso
Guia do desenvolvedor de empacotamento de aplicativos     Oracle Solaris 10 1/13 Information Library (Português (Brasil))
search filter icon
search icon

Informação sobre o documento

Prefácio

1.  Criando um Pacote

2.  Construindo um Pacote

3.  Melhorando a funcionalidade de um pacote (Tarefas)

Criando arquivos de informação e scripts de instalação (Mapa de tarefas)

Criando arquivos de informação

Definindo dependências do pacote

Como definir as dependências do pacote

Escrevendo uma mensagem de copyright

Como escrever uma mensagem de copyright

Reservando espaço adicional em um sistema de destino

Como reservar espaço adicional em um sistema de destino

Criando scripts de instalação

Processamento de script durante a instalação do pacote

Processamento de script durante a remoção do pacote

Variáveis de ambiente de pacote disponíveis para os scripts

Obtendo informações do pacote para um script

Códigos de saída para scripts

Escrevendo um script request

Comportamentos do script request

Regras de criação para scripts request

Como escrever um script request

Coletando dados do sistema de arquivos com o script checkinstall

Comportamentos do script checkinstall

Regras de criação para scripts checkinstall

Como coletar dados do sistema de arquivos

Escrevendo scripts de procedimento

Comportamentos do script de procedimento

Regras de criação dos scripts de procedimento

Como escrever scripts de procedimento

Escrevendo scripts de ação de classe

Definindo classes de objeto

Como as classes são processadas durante a instalação do pacote

Como as classes são processadas durante a remoção do pacote

O script de ação de classe

Comportamentos do script de ação de classe

Regras de criação para sripts de ação de classe

As classes de sistema especiais

O script de classe sed

O script de classe awk

O script de classe build

O script de classe preserve

O script de classe manifest

Como escrever scripts de ação de classe

Criando pacotes assinados

Pacotes assinados

Gerenciamento de certificado

Adicionando certificados de confiança à chave de armazenamento de pacote

Adicionando um certificado de usuário e chave privada à chave de armazenamento de pacote

Verificando o conteúdo na chave de armazenamento de pacote

Excluindo certificados de usuário e chaves privadas da chave de armazenamento de pacote

Criação de pacotes assinados

Como criar um pacote não assinado no formato de diretório

Como importar os certificados para a chave de armazenamento de pacote

Como assinar o pacote

4.  Verificando e transferindo um pacote

5.  Estudos de caso de criação de pacote

6.  Técnicas avançadas para a criação de pacotes

Glossário

Índice

Criando pacotes assinados

O processo de criação de pacotes assinados abrange várias etapas e requer um pouco de compreensão sobre novos conceitos e terminologias. Esta seção oferece informações sobre pacotes assinados, sua terminologia e sobre o gerenciamento de certificados. Esta seção oferece também procedimentos detalhados sobre como criar um pacote assinado.

Pacotes assinados

Um pacote assinado é um pacote com formato de fluxo normal que possui uma assinatura digital (assinatura digital PKCS7 codificada em PEM definida abaixo) que verifica o seguinte:

Um pacote assinado é idêntico a um pacote não assinado, exceto pela assinatura. Um pacote assinado é compatível em binário com um pacote não assinado. Portanto, um pacote assinado pode ser usado com as versões mais antigas das ferramentas de empacotamento. No entanto, a assinatura é ignorada nesse caso.

A tecnologia de empacotamento assinado introduz algumas novas terminologias e abreviações, que estão descritas na tabela seguinte.

Termo
Definição
ASN.1
Notação de sintaxe abstrata 1 - Um forma de representar objetos abstratos. A ASN.1 define, por exemplo, um certificado de chave pública, todos os objetos que fazem parte do certificado e a ordem na qual os objetos são coletados. No entanto, a ASN.1 não específica como os objetos são serializados para armazenamento e transmissão.
X.509
Recomendação ITU-T X.509 - Especifica a sintaxe amplamente adotada de certificado de chave pública X.509.
DER
Regras de codificação diferenciadas - Uma representação binária de um objeto ASN.1 e define como um objeto ASN.1 é serializado para armazenamento e transmissão em ambientes de computação.
PEM
Mensagem de privacidade melhorada - Uma forma de codificar um arquivo (em DER ou em outro formato binário) usando a codificação de base 64 e alguns cabeçalhos opcionais. A PEM era usada inicialmente para codificação de mensagens de e-mail de tipo MIME. A PEM também é usada amplamente para codificação de certificados e chaves privadas em um arquivo que existe em um sistema de arquivos ou em uma mensagem de e-mail.
PKCS7
Criptografia de chave pública de padrão #7 - Este padrão descreve uma sintaxe geral de dados que pode apresentar criptografia aplicada a eles, tal como assinaturas e envelopes digitais. Um pacote assinado contém uma assinatura PKCS7 integrada. Esta assinatura contém como mínimo a síntese criptografada do pacote, junto com o certificado de chave pública X.509 do assinante. O pacote assinado também pode conter cadeia de certificados. A cadeia de certificados pode ser usada ao formar uma cadeia de confiança a partir do certificado do assinante até um certificado de confiança armazenado localmente.
PKCS12
Criptografia de chave pública de padrão #12 - Este padrão descreve uma sintaxe para armazenamento de objetos criptografados em disco. A chave de armazenamento de pacote é mantida neste formato.
Chave de armazenamento de pacote
Um repositório de certificados e chaves que pode ser consultado pelas ferramentas do pacote.

Gerenciamento de certificado

Antes de criar um pacote assinado, você deve ter uma chave de armazenamento de pacote. Esta chave de armazenamento de pacote contém certificados na forma de objetos. Existem dois tipos de objetos em uma chave de armazenamento de pacote:

Certificados de confiança

Um certificado de confiança que contém um certificado único de chave pública que pertence a outra entidade. O certificado de confiança tem essa denominação porque o proprietário da chave de armazenamento confia realmente que a chave pública do certificado pertence à identidade indicada pelo “sujeito” (proprietário) do certificado. O emissor do certificado se responsabiliza por esta confiança assinando o certificado.

Os certificados de confiança são usados na verificação de assinaturas e ao iniciar uma conexão a um servidor seguro (SSL).

Chave de usuário

Uma chave de usuário conserva informações criptográficas importantes que diferenciam maiúsculas e minúsculas. Esta informação é armazenada em um formato protegido para evitar acesso não autorizado. Uma chave de usuário está formada pela chave privada do usuário e pelo certificado de chave pública que corresponde à chave privada.

As chaves de usuário são usadas ao criar um pacote assinado.

Por padrão, a chave de armazenamento de pacote é armazenada no diretório /var/sadm/security. Os usuários individuais também podem ter suas próprias chaves de armazenamento armazenadas por padrão no diretório $HOME/.pkg/security.

No disco, uma chave de armazenamento de pacote pode se apresentar em dois formatos: formato de vários arquivos e formato de arquivo único. O formato de vários arquivos armazena seus objetos em vários arquivos. Cada tipo de objeto é armazenado em um arquivo diferente. Todos os arquivos devem ser criptografados usando a mesma frase-senha. Uma chave de armazenamento de arquivo único armazena todos os seus objetos em um único arquivo no sistema de arquivos.

O principal utilitário usado para gerenciar os certificados e a chave de armazenamento de pacote é o comando pkgadm. As subseções seguintes descrevem as tarefas mais comuns usadas para gerenciamento de chaves de armazenamento de pacote.

Adicionando certificados de confiança à chave de armazenamento de pacote

Um certificado de confiança pode ser adicionado à chave de armazenamento de pacote usando o comando pkgadm. O certificado pode estar no formato PEM ou DER. Por exemplo:

$ pkgadm addcert -t /tmp/mytrustedcert.pem

Neste exemplo, o certificado em formato PEM denominado mytrustedcert.pem é adicionado à chave de armazenamento de pacote.

Adicionando um certificado de usuário e chave privada à chave de armazenamento de pacote

O comando pkgadm não gera certificados de usuário nem chaves privadas. Os certificados de usuário e chaves privadas são obtidos normalmente de uma Autoridade de certificado, tal como Verisign. Ou, são gerados localmente tal como um certificado auto-assinado. Uma vez a chave e o certificado tenham sido obtidos, eles podem ser importados para a chave de armazenamento de pacote usando o comando pkgadm. Por exemplo:

pkgadm addcert -n myname -e /tmp/myprivkey.pem /tmp/mypubcert.pem

Neste exemplo, são usadas as seguintes opções:

-n myname
Identifica a entidade (myname) da chave de armazenamento de pacote na qual você deseja operar. A entidade myname se torna o alias no qual os objetos são armazenados.
-e /tmp/myprivkey.pem
Especifica o arquivo que contém a chave privada. Neste caso, o arquivo é myprivkey.pem, que está localizado no diretório /tmp.
/tmp/mypubcert.pem
Especifica o arquivo de certificado no formato PEM denominado mypubcert.pem .

Verificando o conteúdo na chave de armazenamento de pacote

O comando pkgadm também é usado para visualizar o conteúdo da chave de armazenamento de pacote. Por exemplo:

$ pkgadm listcert

Este comando exibe os certificados de confiança e as chaves privadas da chave de armazenamento de pacote.

Excluindo certificados de usuário e chaves privadas da chave de armazenamento de pacote

O comando pkgadm pode ser usado para excluir certificados de confiança e chaves privadas da chave de armazenamento de pacote.

Ao excluir os certificados de usuários, o alias do par certificado/chave deve ser especificado. Por exemplo:

$ pkgadm removecert -n myname

O alias do certificado é o nome comum do certificado, que pode ser identificado usando o comando pkgadm listcert. Por exemplo, este comando exclui um certificado de confiança intitulado Trusted CA Cert 1:

$ pkgadm removecert -n "Trusted CA Cert 1"

Observação - Se você possuir tanto um certificado de confiança quanto um certificado de usuário armazenado usando o mesmo alias, ambos são excluídos quando a opção -n for especificada.


Criação de pacotes assinados

O processo de criação de pacotes assinados apresenta três etapas básicas:

  1. A criação de um pacote não assinado no formato de diretório.

  2. A importação do certificado assinado, certificados CA, e da chave privada para a chave de armazenamento de pacote.

  3. A assinatura do pacote da Etapa 1 com os certificados da Etapa 2.


Observação - As ferramentas de empacotamento não criam certificados. Estes certificados devem ser obtidos de uma Autoridade de certificado, tal como Verisign ou Thawte.


Cada etapa da criação de pacotes assinados está descrita nos procedimentos seguintes.

Como criar um pacote não assinado no formato de diretório

O procedimento para a criação de um pacote não assinado no formato de diretório é igual ao procedimento para a criação de um pacote normal, conforme descrito previamente neste manual. O procedimento seguinte descreve o processo de criação do pacote não assinado no formato de diretório. Se você precisar de mais informações, consulte as seções anteriores sobre a construção de pacotes.

  1. Crie o arquivo pkginfo.

    O arquivo pkginfo deve ter o seguinte conteúdo básico:

    PKG=SUNWfoo
    BASEDIR=/
    NAME=My Test Package
    ARCH=sparc
    VERSION=1.0.0
    CATEGORY=application
  2. Crie um arquivo prototype.

    O arquivo prototype deve ter o seguinte conteúdo básico:

    $cat prototype
    i pkginfo
    d none usr 0755 root sys
    d none usr/bin 0755 root bin
    f none usr/bin/myapp=/tmp/myroot/usr/bin/myapp 0644 root bin
  3. Liste o conteúdo do diretório de origem do objeto.

    Por exemplo:

    $ ls -lR /tmp/myroot

    A saída seria semelhante à seguinte:

    /tmp/myroot:
    total 16
    drwxr-xr-x   3 abc      other        177 Jun  2 16:19 usr
    
    /tmp/myroot/usr:
    total 16
    drwxr-xr-x   2 abc      other        179 Jun  2 16:19 bin
    
    /tmp/myroot/usr/bin:
    total 16
    -rw-------   1 abc      other       1024 Jun  2 16:19 myapp
  4. Crie o pacote não assinado.
    pkgmk -d `pwd`

    A saída seria semelhante à seguinte:

    ## Building pkgmap from package prototype file.
    ## Processing pkginfo file.
    WARNING: parameter <PSTAMP> set to "syrinx20030605115507"
    WARNING: parameter <CLASSES> set to "none"
    ## Attempting to volumize 3 entries in pkgmap.
    part  1 -- 84 blocks, 7 entries
    ## Packaging one part.
    /tmp/SUNWfoo/pkgmap
    /tmp/SUNWfoo/pkginfo
    /tmp/SUNWfoo/reloc/usr/bin/myapp
    ## Validating control scripts.
    ## Packaging complete.

    O pacote existe agora no diretório atual.

Como importar os certificados para a chave de armazenamento de pacote

O certificado e a chave privada que serão importados devem existir como chave privada e certificado X.509 codificado em DER ou PEM. Além disso, o intermediário ou a “cadeia” de certificados que unem seu certificado assinado à Autoridade de certificado devem ser importados para a chave de armazenamento de pacote antes que um pacote seja assinado.


Observação - Cada Autoridade de certificado pode emitir certificados em vários formatos. Para extrair os certificados e a chave privada do arquivo PKCS12 e colocar no arquivo X.509 codificado em PEM (apropriado para a importação à chave de armazenamento de pacote), use um utilitário de conversão de software gratuito como o OpenSSL.


Se a sua chave privada estiver criptografada (que deveria ser geralmente o caso), você é solicitado a introduzir uma frase-senha. Você também será solicitado a introduzir uma senha para proteger a chave de armazenamento de pacote resultante. Você tem a opção de não fornecer a senha, mas como conseqüência a chave de armazenamento de pacote não será criptografada.

O procedimento seguinte descreve como importar os certificados usando o comando pkgadm uma vez o certificado esteja no formato apropriado.

  1. Importe todos os certificados de Autoridade de certificado encontrados no seu arquivo de certificado X.509 codificado em DER ou PEM.

    Por exemplo, para importar todos os certificados de Autoridade de certificado encontrados no arquivo ca.pem, você deve digitar o seguinte:

    $ pkgadm addcert -k ~/mykeystore -ty ca.pem

    A saída seria semelhante à seguinte:

    Trusting certificate <VeriSign Class 1 CA Individual \
    Subscriber-Persona Not Validated>
    Trusting certificate </C=US/O=VeriSign, Inc./OU=Class 1 Public \
    Primary Certification Authority
    Type a Keystore protection Password.
    Press ENTER for no protection password (not recommended): 
    For Verification: Type a Keystore protection Password.
    Press ENTER for no protection password (not recommended): 
    Certificate(s) from <ca.pem> are now trusted

    A fim de importar sua chave assinada para a chave de armazenamento de pacote, você deve fornecer um alias que será usado mais tarde ao assinar o pacote. Este alias também pode ser usado se quiser excluir a chave da chave de armazenamento de pacote.

    Por exemplo, para importar sua chave assinada do arquivo sign.pem, você deve digitar o seguinte:

    $ pkgadm addcert -k ~/mykeystore -n mycert sign.pem

    A saída seria semelhante à seguinte:

    Enter PEM passphrase:
    Enter Keystore Password: 
    Successfully added Certificate <sign.pem> with alias <mycert>
  2. Verifique se os certificados estão na chave de armazenamento de pacote.

    Por exemplo, para visualizar os certificados na chave de armazenamento criada na etapa anterior, você deve digitar o seguinte:

    $ pkgadm listcert -k ~/mykeystore

Como assinar o pacote

Uma vez os certificados tenham sido importados para a chave de armazenamento de pacote, você pode assinar o pacote. A assinatura real do pacote é realizada com o comando pkgtrans.