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) |
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
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
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
Cómo crear un paquete con formato de directorio sin firmar
4. Verificación y transferencia de un paquete
5. Casos prácticos de creación de paquetes
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.
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:
El paquete procede de la entidad que lo firmó
La entidad la firmó
El paquete no se ha modificado desde que la entidad lo firmó
La entidad que lo firmó es una entidad de confianza
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.
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:
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.
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.
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.
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:
|
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.
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.
El proceso de crear paquetes firmados implica tres pasos básicos:
Creación de un paquete con formato de directorio sin firmar.
Importación del certificado de firma, certificados de AC y clave privada en el almacén de claves de paquetes.
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.
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.
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
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
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
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.
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.
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>
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
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.
Por ejemplo, de acuerdo con los procedimientos anteriores, debería escribir lo siguiente para crear un paquete firmado llamado SUNWfoo.signed:
$ pkgtrans -g -k ~/mykeystore -n mycert . ./SUNWfoo.signed SUNWfoo
La salida de este comando tendría un aspecto similar al siguiente:
Retrieving signing certificates from keystore </home/user/mykeystore> Enter keystore password: Generating digital signature for signer <Test User> Transferring <SUNWfoot> package instance
El paquete firmado se crea en el archivo SUNWfoo.signed y se encuentra en el formato de flujo de paquete. Este paquete firmado es adecuado para copiarlo en un sitio web e instalarse mediante el comando pkgadd y un URL.