JavaScript is required to for searching.
Omitir Vínculos de navegación
Salir de la Vista de impresión
Guía del desarrollador para la creación de paquetes de aplicaciones     Oracle Solaris 10 1/13 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

1.  Diseño de un paquete

2.  Creación de un paquete

3.  Mejora de las funciones de un paquete (tareas)

Creación de secuencias de comandos de instalación y archivos de información (mapa de tareas)

Creación de archivos de información

Definición de dependencias de paquetes

Cómo definir las dependencias de los paquetes

Escritura de un mensaje de copyright

Cómo escribir un mensaje de copyright

Reserva del espacio adicional en un sistema de destino

Cómo reservar espacio adicional en un sistema de destino.

Creación de secuencias de comandos de instalación

Proceso de secuencias de comandos durante la instalación de paquetes

Proceso de secuencia de comandos durante la eliminación de paquetes

Variables de entorno de paquetes disponibles para las secuencias de comandos

Obtención de información del paquete para una secuencia de comandos

Códigos de salida para secuencias de comandos

Escritura de una secuencia de comandos request

Comportamientos de la secuencia de comandos request

Normativa de diseño para secuencias de comandos request

Cómo escribir una secuencia de comandos request

Reunión de datos del sistema de archivos con la secuencia de comandos checkinstall

Comportamientos de la secuencia de comandos checkinstall

Normativa de diseño para secuencias de comandos checkinstall

Cómo reunir datos del sistema de archivos

Escritura de secuencias de comandos de procedimientos

Comportamientos de secuencias de comandos de procedimientos

Normativa de diseño para secuencias de comandos de procedimientos

Cómo escribir secuencias de comandos de procedimientos

Escritura de secuencias de comandos de acción de clase

Definición de clases de objetos

Cómo se procesan las clases durante la instalación de los paquetes

Cómo se procesan las clases durante la eliminación de los paquetes

Secuencia de comandos de acción de clase

Comportamientos de las secuencias de comandos de acción de clase

Normativa de diseño para secuencias de comandos de acción de clase

Clases de sistema especiales

Secuencia de comandos de clase sed

Secuencia de comandos de clase awk

Secuencia de comandos de clase build

Secuencia de comandos de clase preserve

La secuencia de comandos de clase manifest

Cómo escribir secuencias de comandos de acción de clase

Creación de paquetes firmados

Paquetes firmados

Gestión de certificados

Agregación de certificados de confianza al almacén de claves de paquetes

Agregación de un certificado de usuario y de una clave privada al almacén de claves de paquetes

Comprobación del contenido en el almacén de claves de paquetes

Eliminación de certificados de confianza y claves privadas del almacén de claves de paquetes

Creación de paquetes firmados

Cómo crear un paquete con formato de directorio sin firmar

Cómo importar certificados al almacén de claves de paquetes

Cómo firmar el paquete

4.  Verificación y transferencia de un paquete

5.  Casos prácticos de creación de paquetes

6.  Técnicas avanzadas para la creación de paquetes

Glosario

Índice

Creación de paquetes firmados

El proceso de creación de paquetes firmados implica varios pasos y requiere cierta comprensión de los nuevos conceptos y la terminología. En esta sección se ofrece información sobre paquetes firmados, su terminología, así como información sobre administración de certificados. Esta sección también ofrece procedimientos detallados sobre cómo crear un paquete firmado.

Paquetes firmados

Un paquete firmado tiene formato de flujo normal que cuenta con una firma digital (firma digital PKCS7 con código PEM que se define a continuación) que verifica lo siguiente:

La firma es la única diferencia entre un paquete firmado y otro sin firmar. Un paquete firmado es compatible en el nivel binario con un paquete sin firmar. Por ello se puede usar un paquete firmado con versiones anteriores de las herramientas de creación de paquetes. Sin embargo, la firma se ignora en este caso.

La tecnología de creación de paquetes firmados presenta nueva terminología y abreviaturas que se describen en la tabla siguiente.

Término
Definición
ASN.1
Notación de sintaxis abstracta 1: modo de expresar objetos abstractos. Por ejemplo, ASN.1 define un certificado de clave pública, todos los objetos que componen el certificado, y el orden en el que los objetos se recogen. Sin embargo, ASN.1 no especifica cómo los objetos se serializan para el almacenamiento o la transmisión.
X.509
Recomendación ITU-T X.509: especifica la sintaxis del certificado de clave pública X.509 ampliamente adoptado.
DER
Normas de codificación distinguidas: representación binaria de un objeto ASN.1 y define cómo un objeto ASN.1 se serializa para el almacenamiento o la transmisión en los entornos computacionales.
PEM
Mensaje de privacidad mejorada: forma de codificar un archivo (en DER u otro formato binario) mediante codificación base 64 y algunos encabezados optativos. PEM se utilizaba inicialmente para codificar mensajes de correo electrónico de tipo MIME. PEM también se usa ampliamente para codificar certificados y claves privadas en un archivo que existe en un sistema de archivos o en un mensaje de correo electrónico.
PKCS7
Estándar de criptografía de clave pública n.º 7: este estándar describe una sintaxis general para datos a los que se ha aplicado criptografía, como firmas y sobres digitales. Un paquete firmado contiene una firma PKCS7 incorporada. Esta firma contiene como mínimo la recopilación cifrada del paquete, junto con el certificado de clave pública X.509 del firmante. El paquete firmado también puede contener certificados en cadena. Se pueden usar los certificados en cadena al formar una cadena de confianza del certificado del firmante a un certificado de confianza almacenado localmente.
PKCS12
Estándar de criptografía de clave pública n.º 12: este estándar describe una sintaxis para almacenar objetos criptográficos en el disco. El almacén de claves de paquetes se mantiene en este formato.
Almacén de claves de paquetes
Repositorio de certificados y claves que las herramientas de paquetes pueden consultar.

Gestión de certificados

Antes de crear un paquete firmado, debe tener un almacén de claves de paquetes. Este almacén de claves de paquetes contiene certificados en forma de objetos. Hay dos tipos de objetos en un almacén de claves de paquetes:

Certificado de confianza

Un certificado de confianza contiene un único certificado de clave pública que pertenece a otra entidad. El certificado de confianza se nombra de este modo porque el propietario del almacén de claves confía en que la clave pública del certificado pertenece en realidad a la identidad indicada por el "sujeto" (propietario) del certificado. El emisor del certificado da fe de esta confianza al firmar el certificado.

Los certificados de confianza se usan al verificar firmas y al iniciar una conexión con un servidor (SSL) seguro.

Clave de usuario

Una clave de usuario contiene información de clave criptográfica sensible. Esta información se almacena con un formato protegido para impedir el acceso no autorizado. Una clave de usuario se compone de la clave privada del usuario y el certificado de clave pública que se corresponde con la clave privada.

Las claves de usuario se usan al crear un paquete firmado.

De forma predeterminada, el almacén de claves de paquetes se encuentra en el directorio /var/sadm/security. Cada uno de los usuarios también puede tener su propio almacén de claves guardado de forma predeterminada en el directorio $HOME/.pkg/security.

En el disco, un almacén de claves de paquetes puede estar en dos formatos: formato de varios archivos y formato de un único archivo. Un formato de varios archivos almacena sus objetos en varios archivos. Cada tipo de objeto se almacena en un archivo aparte. Todos estos archivos se deben cifrar mediante las mismas frases de contraseña. Un almacén de claves de un único archivo guarda todos sus objetos en un único archivo del sistema de archivos.

La utilidad principal que se usa para administrar los certificados y el almacén de claves de paquetes es el comando pkgadm. Las subsecciones siguientes describen las tareas más habituales utilizadas par administrar el almacén de claves de paquetes.

Agregación de certificados de confianza al almacén de claves de paquetes

Se puede agregar un certificado de confianza al almacén de claves de paquetes mediante el comando pkgadm. El certificado puede tener formato PEM o DER. Por ejemplo:

$ pkgadm addcert -t /tmp/mytrustedcert.pem

En este ejemplo, el certificado con formato PEM llamado mytrustedcert.pem se agrega al almacén de claves de paquetes.

Agregación de un certificado de usuario y de una clave privada al almacén de claves de paquetes

El comando pkgadm no genera certificados de usuarios o claves privadas. Los certificados de usuario y las claves privadas se obtienen normalmente de una autoridad de certificados, como Verisign. O bien, se generan localmente como certificado autofirmado. Tras obtener la clave y el certificado, se pueden importar al almacén de claves de paquetes mediante el comando pkgadm. Por ejemplo:

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

En este ejemplo se usan las opciones siguientes:

-n myname
Identifica a la entidad (myname) en el almacén de claves de paquetes donde desea trabajar. La entidad myname se convierte en alias en el que se almacenan los objetos.
-e /tmp/myprivkey.pem
Especifica el archivo que contiene la clave privada. En este caso, el archivo es myprivkey.pem y se encuentra en el directorio /tmp.
/tmp/mypubcert.pem
Especifica el archivo de certificado con formato PEM llamado mypubcert.pem.

Comprobación del contenido en el almacén de claves de paquetes

El comando pkgadm también se usa para ver el contenido del almacén de claves de paquetes. Por ejemplo:

$ pkgadm listcert

Este comando muestra los certificados de confianza y las claves privadas en el almacén de claves de paquetes.

Eliminación de certificados de confianza y claves privadas del almacén de claves de paquetes

El comando pkgadm se puede usar para suprimir certificados de confianza y claves privadas del almacén de claves de paquetes.

Cuando suprime certificados de usuarios, debe especificarse el alias del par certificado/clave. Por ejemplo:

$ pkgadm removecert -n myname

El alias del certificado es el nombre habitual del certificado que se puede identificar mediante el comando pkgadm listcert. Por ejemplo, este comando suprime un certificado de confianza de nombre Trusted CA Cert 1:

$ pkgadm removecert -n "Trusted CA Cert 1"

Nota - Si tiene un certificado de confianza y un certificado de usuario almacenados con el mismo alias se suprimen cuando especifica la opción -n.


Creación de paquetes firmados

El proceso de crear paquetes firmados implica tres pasos básicos:

  1. Creación de un paquete con formato de directorio sin firmar.

  2. Importación del certificado de firma, certificados de AC y clave privada en el almacén de claves de paquetes.

  3. Firma del paquete del paso 1 con los certificados del paso 2.


Nota - Las herramientas de creación de paquetes no crean certificados. Estos certificados se deben obtener de una autoridad de certificados, como Verisign o Thawte.


Cada uno de los pasos para crear paquetes firmados se describe en los procedimientos siguientes.

Cómo crear un paquete con formato de directorio sin firmar

El procedimiento para crear un paquete con formato de directorio sin firmar es el mismo que para crear un paquete normal, tal como se ha descrito previamente en este manual. El procedimiento siguiente describe el proceso de crear este paquete con formato de directorio sin firmar. Si necesita más información, consulte las secciones anteriores sobre la construcción de paquetes.

  1. Cree el archivo pkginfo.

    El archivo pkginfo debe tener el siguiente contenido básico:

    PKG=SUNWfoo
    BASEDIR=/
    NAME=My Test Package
    ARCH=sparc
    VERSION=1.0.0
    CATEGORY=application
  2. Cree el archivo prototype.

    El archivo prototype debe tener el siguiente contenido 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. Enumere el contenido del directorio de origen de objetos.

    Por ejemplo:

    $ ls -lR /tmp/myroot

    La salida tendría un aspecto similar al siguiente:

    /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. Cree el paquete sin firma.
    pkgmk -d `pwd`

    La salida tendría un aspecto similar al siguiente:

    ## 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.

    El paquete existe en el directorio actual.

Cómo importar certificados al almacén de claves de paquetes

El certificado y la clave privada que se vayan a importar deben existir como certificado X.509 con codificación PEM o DER y clave privada. Asimismo, los certificados intermedios o de cadena que vinculen el certificado con firma al certificado de Autoridad de certificados se debe importar al almacén de claves de paquetes antes de que un paquete se pueda firmar.


Nota - Cada autoridad de certificados puede emitir certificados en diversos formatos. Para extraer los certificados y la clave privada del archivo PKCS12 a un archivo X.509 con codificación PEM (adecuado para importar al almacén de claves de paquetes), use una utilidad de conversión de software gratuito como OpenSSL.


Si la clave privada se cifra (lo cual sería normal), se le pedirá la frase de contraseña. Asimismo, se le pedirá una contraseña para proteger el almacén de claves de paquetes resultante. Si lo desea puede evitar el uso de una contraseña, pero con ello obtendrá un almacén de claves de paquetes sin cifrar.

El procedimiento siguiente describe cómo importar los certificados mediante el comando pkgadm una vez que el certificado tenga el formato adecuado.

  1. Importe todos los certificados de Autoridad de certificados que se encuentren en el archivo de certificado X.509 con codificación PEM o DER.

    Por ejemplo, para importar todos los certificados de Autoridad de certificados que se encuentren en el archivo ca.pem, debería escribir lo siguiente:

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

    La salida tendría un aspecto similar al siguiente:

    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

    Con el fin de importar la clave de firma al almacén de claves de paquetes, debe proporcionar un alias que se utilice posteriormente al firmar el paquete. Este alias también se puede usar si desea suprimir la clave del almacén de claves de paquetes.

    Por ejemplo, para importar la clave de firma del archivo sign.pem, debería escribir lo siguiente:

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

    La salida tendría un aspecto similar al siguiente:

    Enter PEM passphrase:
    Enter Keystore Password: 
    Successfully added Certificate <sign.pem> with alias <mycert>
  2. Compruebe que los certificados se encuentren en el almacén de claves de paquetes.

    Por ejemplo, para ver los certificados del almacén de claves creados en el paso anterior, debería escribir lo siguiente:

    $ pkgadm listcert -k ~/mykeystore

Cómo firmar el paquete

Cuando los certificados se importan al almacén de claves de paquetes puede firmar el paquete. La firma real del paquete se lleva a cabo mediante el comando pkgtrans.