OldDocumentation:Teledeploy/es

From OCS Inventory NG
Jump to: navigation, search

Instalación de paquetes o ejecución de comandos en computadores clientes

OCS Inventory NG incluye la funcionalidad de instalación de paquetes en los computadores clientes. Desde el servidor de administración central, puede subir paquetes que serán descargados vía HTTP/HTTPS y lanzados por el agente en los computadores clientes.

Nota: Esta opción ha sido probada únicamente con el agente OCS Inventory NG basado en servicio Windows. Dado que el software de instalación requiere privilegios de administrador, el agente lanzado a través de un script de inicio de sesión o enlace directo en el menú de inicio bajo una cuenta de usuario puede no etar disponible para lanzar el software de instalación. También, la descarga en segundo plano de un paquete puede tomar mucho tiempo, y puede bloquear el script de inicio de sesión. Es decir, no se recomienda utilizar la funcionalidad de distribución de paquetes utilizando el script de inventarios de inicio de sesión.


¿Cómo funciona?

Un paquete tiene 4 componentes principales:

  • una prioridad,
  • una acción,
  • opcionalmene un archivo ZIP o TAR.GZ que incluye tantos archivos y directorios que desee,
  • y opcionalmente un comando para lanzar.

Hay 11 niveles de prioridad, del nivel 0 al 10. El nivel 0 es el de mayor prioridad y el nivel 10 el de menor prioridad. Un paquete de nivel de prioridad 0 se distribuirá o ejecutará antes que un paquete de prioridad 1. Un paquete de nivel de prioridad 1 se distribuirá o ejecutará antes de un paquete de prioridad 2, y así sucesivamente.

La acción está asociada con el archivo a distribuir y el comando a lanzar. Esta tripleta puede ser una de las siguientes opciones:

  • Acción Lanzar: para distribuir un archivo ZIP o TAR.GZ y lanzar un archivo ejecutable, con o sin parámetros, un archivo ejecutable incluido en un archivo ZIP o TAR.GZ. Ese archivo ZIP o TAR.GZ será descomprimido en un directorio temporal, se lanzará un comando asociado (nombre del archivo ejecutable sin la ruta) en este directorio temporal.Esta acción permite recuperar un código de resultado del comando lanzado.
  • Acción Ejecutar: para distribuir un archivo ZIP o archivo TAR.GZ (opcional), y lanzarlo con o sin parámetros un archivo ejecutable incluido o no en un archivo ZIP o TAR.GZ. Si el archivo ejecutable no está incluido en un archivo ZIP o archivo TAR.GZ, debe ser parte del software ya instalado en el computador cliente. Típicamente, puede ser un comando estándar de Windows tal como una llamada a un Instalador Windows, RPM o DPKG, o un comando asociado a un archivo TAR.GZ en Linux. Un archivo ZIP o TAR.GZ será descomprimido en un directorio temporal, y un comando asociado (nombre del archivo ejecutable con la ruta o parámetros si es necesario) se lanzará en este directorio temporal. Esta acción no permite recuperar un código del resultado del comando lanzado. Sin embargo, esta acción permite ejecutar comandos en los computadores clientes, sin distribuir ningún archivo. Por ejemplo, puede utilizarlo para correr comandos de configuración del sistema operativo específico.
  • Acción Almacenar: para distribuir un archivo ZIP o TAR.GZ y almacenar únicamente su contenido en una carpeta de un computador cliente.No hay un comando asociado con esta acción, únicamente una ruta para especificar dónde almacenar los archivos extraidos.

Nota: Todos los paquetes que desea distribuir deben estar comprimidos en formato ZIP para los Agentes Windows y en formato tar y gzip para computadores Linux.

Si desea generar su propio instalador, puede estar interesado en mirar el Sistema de Instaladores de Nullsoft (http://nsis.sourceforge.net) o de Inno Setup (http://www.jrsoftware.org). Estas herramientas son instaladores con licencia GPL para Windows, capaces de crear archivos de instalación auto-extraibles.

Por ejemplo, esta funcionalidad le permite crear un paquete ZIP que incluya el ejecutable de Media Player Classic, un subdirectorio que incluya algunos archivos MP3 y una lista de reproducción de Media Player Classic con referencias a esos archivos MP3 en el subdirectorio. El comando asociado hará una llamada a Media Player Classic con el parámetro de línea de comandos para lanzar la lista de reproducción. Una vez que este paquete sea descargado en los clientes Windows, los usuarios tendrán Media Player Classic en ejecución, reproduciendo los archivos MP3 de lista de reproducción. ¿Chévere, no es verdad? ;-)

Puede crear a través de la consola de administración su paquete a distribuir. Es descrito automáticamente por:

  • Una referencia en la base de datos, utilizado por el servidor de comunicación para pedir al agente que descargue el paquete.
  • Un archivo de información, llamado "info". Se trata de un archivo XML que describe el paquete y la acción que el agente tendrá que iniciar,
  • 0 o más archivos de fragmentos de datos. El archivo que va a subir (si lo hay) será dividido en pequeñas partes para permitir que los agentes descarguen partes por partes y, a continuación, faciliten la reanudación de una descarga fallida. Si la descarga de un fragmento falla, sólo se descargará ese fragmento en otra ocasión, no todo el paquete. Podrá elegir el tamaño de cada fragmento de acuerdo a las posibilidades de su red.

Nota: para subir paquetes utilizando la consola de Administración, es posible que necesite configurar PHP y Apache de manera que permitan subir archivos grandes. Consulte § 11.2.4 Tamaño de archivos a subir para distribución de paquetes, para conocer cómo hacer esa configuración.

Una vez que se genera el paquete, se debe activarlo. Este indica dónde se encuentra el servidor web habilitado para SSL (por ejemplo, servidores de distribución) donde el agente podrá descargar el archivo de información y archivos de fragmentos.

Por último, debe seleccionar en que computador se instalará el paquete.

A partir de ahora, el agente es capaz de instalar el paquete.

Cuando el agente envía un inventario al servidor de Comunicación, el servidor de Comunicación le dirá al agente si tiene uno o más paquetes para instalar, con el nivel de prioridad de cada paquete, y donde puede encontrar los archivos de información.

El agente entonces comienza un período de descarga. Un período se compone de ciclos, definido por la opción de configuración “DOWNLOAD_PERIOD_LENGTH”. En forma predeterminada, un período contiene 10 ciclos.

En cada ciclo, calcula el “prioridad del paquete del módulo de número de ciclos”. Si es igual a 0, descarga los archivos de fragmentos del paquete. Después de cada fragmento, espera “DOWNLOAD_FRAG_LATENCY” (el valor predeterminado de esta opción de configuración es 10 segundos) antes de descargar el siguiente fragmento.

Cuando todos los fragmentos de un paquete se descargan, lanzará el comando del paquete y esperará “DOWNLOAD_CYCLE_LATENCY” (el valor predeterminado de esta opción de configuración es 60 segundos) antes de comenzar un nuevo ciclo e incrementar el número del ciclo.

Cuando todos los ciclos de un período se han procesado, espera “DOWNLOAD_PERIOD_LATENCY” (el valor predeterminado de esta opción de configuración es 0 segundos).

Si todos los paquetes se han descargado e instalado exitosamente, se detiene, si no, comienza un nuevo período de los ciclos.

PRECAUCIÓN: Nivel de prioridad 0 es un nivel especial. Todos los paquetes con prioridad 0 se descargan antes de todos los demás paquetes con mayor prioridad al inicio de cada ciclo. Si la descarga falla, el agente reintentará descargar los paquetes fallidos de prioridad 0, sin comprobar otros paquetes. Por lo tanto, puede detener completamente la distribución. USE EL NIVEL DE PRIORIDAD 0 CON CUIDADO!

Puede utilizar estas opciones para personalizar el uso del ancho de banda de su red. Al incrementar las opciones de latencia, incrementará el tiempo para descarga de fragmentos y reducirá el uso promedio de la red.

Al incrementar la opción del período de duración, retrasará la nueva descarga de fragmentos fallidos, pero también, al reducir el período de duración a un valor menor de 10, puede terminar la descarga del paquete con un nivel de prioridad superior a este valor.

Requisitos

El servidor de distribución que almacena los archivos de información debe tener SSL habilitado ya que la descarga del archivo de información es muy crítica. Este archivo contiene información de la descripción del paquete y el comando para lanzarlo. Por lo tanto, si alguien puede usurpar el servidor de distribución, puede lanzar cualquier comando que quiera en sus computadores. Es por eso que el servidor de distribución debe utilizar SSL para permitir que los agentes que autenticación con el servidor y asegurar que este es el verdadero servidor de distribución.

El agente debe tener un certificado para validar la autenticación del servidor de distribución. Este certificado debe ser almacenado en un archivo llamado “cacert.pem” en la carpeta del agente OCS Inventory NG bajo Windows, y en el directorio “/etc/ocsinventory-client” bajo Linux.

Bajo Windows, puede utilizar el Empaquetador OCS Inventory NG (véase Carga del agente para distribución a través del lanzador “OcsLogon.exe”) para crear un instalador de agente, que incluya certificado, o pueda usar el siguiente script de inicio de sesión de muestra para copiar el archivo del certificado en la carpeta del agente (se asume que el agente está instalado bajo “C:\Program Files\OCS Inventory Agent” y que el archivo del certificado está disponible en la carpeta compartida "MICOMPARTIDA" en el servidor "MISERVDOR").

@echo off

REM Revisar si el archivo CA file existe

if exist “C:\Program Files\OCS Inventory Agent\cacert.pem” goto CA_END

REM Si el archivo CA no existe, instalarlo

Copy [//MYSERVER/MYSHARE/cacert.pem \\MYSERVER\MYSHARE\cacert.pem] “C:\Program Files\OCS Inventory Agent\cacert.pem”

:CA_END

Si tiene una Infraestructura de Clave Pública (PKI), debe crear un certificado válido de servidor para el servidor de distribución y copiar su certificado de Autoridad en el archivo “cacert.pem”.

Si no dispone de una Infraestructura de Clave Pública (PKI), puede utilizar un certificado autofirmado para su servidor de distribución, y copiar el certificado del servidor en el archivo “cacert.pem”.

Para obtener más información consulte § 8.8 Uso de certificados SSL para Distribución de paquetes.

Creación de paquetes

En primer lugar, debe generar su paquete.


[[Image:]]Con el ratón seleccione la opción “Generar” del menú “Distribución”.


[[Image:]]


Introduzca un nombre para tu paquete.

Seleccione el sistema operativo para ese paquete. Puede elegir entre Windows y Linux.

Seleccione el protocolo para descargar ese paquete. En este momento, sólo está disponible el protocolo HTTP.

Seleccione la prioridad en ese paquete. Puede elegir el nivel de prioridad de 0 a 10. Los paquetes con menor prioridad se descargarán antes que los paquetes con mayor prioridad, salvo si la descarga falla (consulte § 8.7 Estadísticas de distribución y validación exitosa).

También puede elegir advertir a los usuarios que se está lanzando algo en su ordenador. Fije la opción “Avisar al usuario” del menú desplegable en “SI”, introduzca el texto a mostrar al usuario, cuánto tiempo se mostrará el texto antes de autovalidar la instalación del paquete (utilice 0 para esperar indefinidamente) y si el usuario puede cancelar o retrasar el despliegue para el siguiente inventario.

También puede especificar si la distribución de un paquete necesita interacción con el usuario dejando la opción “La terminación de la instalación necesita intervención del usuario” en “SI”, por ejemplo, si el programa de instalación necesita que el usuario necesita introduzca alguna información en un cuadro de diálogo para terminar.

Por último, puede seleccionar su acción en la opción del menú desplegable “Acción” ". Aquí algunos ejemplos que describen qué tipos de paquetes se pueden generar.

Instalación de paquetes utilizando el comando “Lanzar”

El paquete que desea distribuir tiene uno o más más archivos, con al menos un archivo ejecutable para lanzar el instalador del paquete. Comprima esos archivos utilizando la herramienta ZIP si el paquete es para computadores Windows, o utilizando tar y gzip si el paquete es para computadores Linux.

Seleccione la acción “Lanzar” y haga clic en el botón “Ver” para seleccionar su archivo ZIP o TAR.GZ.

En el campo “Comando”, simplemente introduzca el nombre de archivo ejecutable, sin la ruta, pero opcionalmente, con parámetros. Es este comando el que se lanzará en el computador cliente una vez que el paquete sea descargado y descomprimido en un directorio temporal.

En nuestro siguiente ejemplo, se instala una nueva versión del Agente OCS Inventory NG para Windows, utilizando instalación silenciosa, especificando la dirección del servidor de Comunicación mi_srv_com_ocs, desactivando el uso de la configuración del proxy de Internet Explorer y habilitando el modo de depuración. De manera que el archivo ZIP únicamente incluye el archivo “OcsAgentSetup.exe” y el campo “Nombre de archivo” contiene:

  • OcsAgentSetup.exe /S /SERVIDOR:mi_srv_com_ocs /NP /DEBUG

[[Image:]]

Haga clic en el botón “Enviar” para subir el paquete a la consola Administrativa.

A continuación, debe especificar el tamaño de cada fragmento de paquete para permitir que el agente descargue el paquete en pequeñas partes. Esto permitirá reanudar la descarga. Si la descarga de un fragmento falla, sólo ese fragmento será descargado en otra ocasión, no todos los paquetes. Por lo tanto, elija el tamaño de fragmento de acuerdo a las capacidades de su red.

La consola de Administración dividirá entonces el paquete en fragmentos y los almacenará en una carpeta con el nombre de la hora del paquete dentro del directorio “download” de directorio raíz del servidor web apache. Igualmente creará en el mismo directorio el archivo de información del paquete "info", un archivo XML que describe el paquete y la acción que el agente tendrá que lanzar.

[[Image:]]

Instalación de paquetes utilizando el comando “Ejecutar”

El paquete que usted desea distribuir tiene uno o más archivos, con opcionamente un archivo ejecutable para lanzar la instalación del paquete. Comprima estos archivos en formato ZIP si se trata de computadores Windows, utilice tar y gzip si el paquete es para computadores Linux.


Seleccione la opción “Ejecutar” y haga clic en el botón “Mirar” para seleccionar su archivo ZIP o TAR.GZ.


En el campo “Command”, simplemente introduzca la ruta del archivo ejecutable a lanzar con los parámetros (no se requiere la ruta completa ya que el ejecutable de la aplicación está listado en la ruta de búsqueda del sistema, o está incluida en el paquete). Este es el comando que se lanzará en el computador del cliente una vez el paquete se haya descargado.


Nota: Las variables de entorno se expanden en “Command”. Esto le habilita para usar cosas tales como %SystemDrive%, %SystemRoot%, %windir%, %ProgramFiles%, %CommonProgramFiles% ...etc.


En nuestro siguiente ejemplo, instalaremos software utilizando una instalación silenciosa Windows Installer. De manera que, el archivo ZIP únicamente incluye el archivo “software.msi” y el campo “Command” contiene:


  • msiexec.exe /i software.msi /quiet

[[Image:]]


Haga clic en el botón “Enviar” para subir el paquete a la Consola de Administración.


A continuación, debe especificar el tamaño de cada fragmento de paquete para permitir la descarga del agente por pequeñas partes. Esto permitirá reanudar la descarga. Si la descarga de un fragmento falla, sólo este fragmento se descargará en otro momento, no todo el paquete. Por lo tanto, elija el tamaño del fragmento de acuerdo a las capacidades de su red.


A continuación, la consola de administración de paquetes dividirá el paquete en fragmentos y los almacenará en una carpeta con un nombre de acuerdo al valor timestamp en el directorio de “descarga” del directorio raíz del servidor web apache. Asimismo, creará en el mismo directorio el archivo de información del paquete llamado “Info”, un archivo XML que describe el paquete y la acción del agente que tendrá que lanzar.


[[Image:]]

Comando utilizando el comando “Ejecutar”

El paquete que desea instalar es únicamente un comando lanzar.

Seleccione la acción “Ejecutar” y deje el campo “Archivo” en blanco.


In field “Command”, just fill in name of command with, optionally, parameters. It’s this command which will be launched on client computer once package will be downloaded.


Nota: Environnement variables are expanded in “Command”. It enables you to use things such as %SystemDrive%, %SystemRoot%, %windir%, %ProgramFiles%, %CommonProgramFiles% ...etc.


In our following example, we deploy a command to specify proxy address to use for System Applications under Windows. So the “Command” field contains:


  • Proxycfg.exe /p 192.168.1.1

[[Image:]]


Click “Send” button to upload package to Administration console.


As you’ve not selected to upload a file, screen to configure fragement size is not displayed. Administration console will only create, in a folder named as package timestamp in directory “download” of apache web server root directory, the package information file named “info”, an XML file describing the package and action agent will have to launch.

Paquete almacenado utilizando el comando “Almacenar”

Package you want to deploy has one or more files, to be stored in a specific folder on client computers. Compress theses files using ZIP tool if package addresses Windows computers, using tar and gzip if package addresses Linux computers.


Choose action “Store” and click “Browse” button to select your ZIP or TAR.GZ file.


In field “Path”, just fill in path where agent will store extracted files once package will be downloaded.


NB: Environnement variables are expanded in “Command”. It enables you to use things such as %SystemDrive%, %SystemRoot%, %windir%, %ProgramFiles%, %CommonProgramFiles% ...etc.

Also, if provided folder path does not exist, it will be recursively created.


In our following example, we deploy a file to store in folder “C:\My Folder”:


[[Image:]]


Click “Send” button to upload package to Administration console.


Next, you must specify the size of each fragment of package to allow agent downloading package by small parts. This will allow download resuming. If download of a fragment fails, only this fragment will be downloaded another time, not all the package. So choose fragment size according to your network capabilities.


Administration console will then split package in fragments and store them in a folder named as package timestamp in directory “download” of apache web server root directory. It will also create in the same directory the package information file named “info”, an XML file describing the package and action agent will have to launch.


[[Image:]]

Activaciónd de paquetes

Once package have been created, you must specify where agent can download it.


Agent will first download package information file. As this file is very critical, this download must be done using HTTP over SSL (HTTPS) to ensure that agent can authenticate deployment server. Next, download of package fragment described in information file will be done using standard HTTP.


Nota: If you do not want to use Administration server as deployment server, you must first copy folder “download/package_timestamp” from Administration server Apache document root directory to another web server. You may want to use a directory synchronization utility like rsync (http://samba.anu.edu.au/rsync) to automatically do this task; otherwise, we will have to do it manually.


You may also choose to host information file on a different web server than the one which hosts fragment files. For example, if you have multiple geographical sites with only one central Communication server, you may want to host information files on Communication server, and fragment files on a web server on each site. For this, you need to activate a package per site, and for each package, information file will be hosted on Communication server and fragment files on site web server. This will dramatically decrease intersite network bandwidth use.


[[Image:]] Point your mouse on “Deployment” menu and select “Activate”. You will view here all built package, and also ALL activated package.


You can click the red cross to delete a built package. This will delete package reference from database and also delete information file and fragment files from Administration console download directory. So, deleted package will be unavailable for activation, all activated packages using this package will be deleted, and also unaffected from computers.


[[Image:]]


Click “Active” button on the line corresponding to the package you want to activate.


In field “HTTPS url”, enter URL for download in HTTPS package information file.

In field “HTTP url”, enter URL for downloading in HTTP package fragment files.


NB: Do not enter localhost as server address in URL! Remenber that these URLs will be processed by agents.

If your HTTPS or HTTP deployement server works on non standard ports, you can specify working port using the standard notation “server_address:server_port/folder”. For example, your deployement server works on port HTTP 8080 and HTTPS 4343 on server 192.168.1.1, and packages are located under /download durectory. You must fill in

https url: 192.168.1.1:4343/download

http url: 192.168.1.1:8080/download


In our case, we’ve choosen to use Administration server as deployment server for both package information file and package fragments.


So we have filled in in both fill something like “ocs-admin-srv.domain.tld/download”.


[[Image:]]


Click send button. Administration console will ensure that both information file and package fragment files are available on specified URLs.


“Non notified” column shows you the number of computers which haven’t yet been notified they have corresponding package to deploy.


“Success” column shows you the number of computers which have successfully deploy corresponding package.


“Errors” column shows you the number of computers which encounter errors deploying corresponding package.


The “Stats” icon allows you to view percentile of computers which are waiting for notification, those which are notified (server ask them to deploy the package), and those which have finished deploying with result code (SUCCESS or ERROR).


Afectación de paquetes a computadores

You can affect package to computer one by one, by displaying computer properties, selecting “Customization” icon and adding the package”. However, this is not the best way if you would like to affect package to many computers.


The best way is to use “Search with various creteria” functions to search for computers you want, and to affect package to all these computers in one time.


In the following example, we will affect package we’ve created to all Windows XP computers.


So first, we search for Windows XP computers.


[[Image:]]


This search returns 59 computers on 4 pages.


[[Image:]]


Just click “Deploy” to deploy on all computers returned by the search, not only on visible ones.


[[Image:]]


Click on “Affect” icon of package line to affect this package to all selected computers.


Agents on computers will be notified at next Communication Server contact they have this package to deploy. So, while agent do not contact Communication server, computer will appear in console with status “WAITING NOTIFICATION”. Once agent has contacted Communication server, the status will be “NOTIFIED”.


Desafectación de paquetes

[[Image:]] Point your mouse on “Deployment” menu and select “Activated”. You will see here all packages available for deployments on computers.


[[Image:]]


The red cross icon will unaffect package for ALL computers, and unactivate package. So package is still referenced in database, information and fragment files are still available on Administration server download directory. However, it has the same status as if you have just built it and can be activated again.


Estadisticas de distribución y validación exitosa

As package may have been activated and then unactivated, deployment statics are in “Activate” menu.


You can show deployement statics by clicking “Stats” icon for a package.


Since you’ve affected package at least to one computer, you will have graphical stats showing deployment notification status.


[[Image:]]


Status may be once of the following:


Status code
Meaning
WAITING NOTIFICATION Server is waiting for agent communication to notify there is something to download.
NOTIFIED Agent has been notified there is something to download. Now waiting for result code.
SUCCESS [code] Agent has successfully download package and launch command or stored extracted data.

With “Launch” action, this status may be completed with command execution return code.

ERR_ALREADY_SETUP Package was previously installed successfully on this computer.
ERR_BAD_ID Agent is unable to download package because it cannot find package ID on deployment server.
ERR_BAD_DIGEST Downloaded data are has bad digest, so agent does not execute associated command.
ERR_DOWNLOAD_PACK Agent was unable to uncompress download ZIP or TAR.GZ file.
ERR_BUILD Agent was unable to rebuild package fragments.
ERR_EXECUTE Agent was unable to execute associated package command.
ERR_CLEAN Agent was unable to clean downloaded package.
ERR_TIMEOUT Agent was unable to download package during DOWNLOAD_TIMEOUT days.
ERR_ABORTED User canceled package command execution (you’ve choosen to notify him, and allowed him to cancel).
ERR_EXECUTE_PACK Not used

“Validating Success” will clear statistics of computers which have successfully deployed package.


“Unaffect not notified” will unaffect package from computers which do not have contacted server since you’ve affected package to computers. Package will not be deleted, only computers which do not have yet receive order to deploy this package will have this order cancelled.


“Validate all” will clear all statistics, and unaffect package from non notified computers. It is the same as “Validate Success” + “Unaffect not notified”.


Nota: You MUST validate deployment status once deployement ended to clear database deployement status for computer. Otherwise, database will grow up and speed down !


You can click on number for each status line to display computers having this deployment status.


Uso de certificados SSL en la distribución de paquetes

Package deployment infrastructure is too much powerfull, so it requiress SSL access to validate server before trying to download something from. So you need some SSL certificates for use with your deployment server.


Certificate definition from http://en.wikipedia.org/wiki/Public_key_certificate


“In cryptography, a public key certificate (or identity certificate) is a certificate which uses a digital signature to bind together a public key with an identity — information such as the name of a person or an organization, their address, and so forth. The certificate can be used to verify that a public key belongs to an individual.

In a typical public key infrastructure (PKI) scheme, the signature will be of a certificate authority (CA). In a web of trust scheme, the signature is of either the user (a self-signed certificate) or other users ("endorsements"). In either case, the signatures on a certificate are attestations by the certificate signer that the identity information and the public key belong together.”


You can use a quick, easy but limited way, self signed certificate, or a more secure and reliable tool, a PKI with a Certificate Authority.


Apache web server comes with OpenSSL cryptographic library, which allow creating and managing certificates.


Uso de certificados autofirmados

Nota: Take care about certificate validity period, as web server self signed certificate must be installed on each client computer running the agent. When certificate will expire, you will have to generate and deploy new certificate on each client computer!


==== Con Servidor OCS Inventory NG para Linux

Usually, Apache or mod_ssl packages come with sample scripts to generate certificates, especially test certificates.


However, we provide below a sample script using OpenSSL for generating a self signed certificate for use in Apache.


#!/bin/sh


#

# First, generate apache server certificate request

#

# Generate 1024 bits RSA key, store private key in a

# no password protected PEM file server.key, using

# system default openssl configuration file.

#

echo

echo Generating Apache server private key...

echo

openssl genrsa -out server.key 1024


#

# Next, sign the apache server certificate with the apache

# server key

#

# Sign with PEM certificate server.crt, using PEM file

# server.key for server private key, using system default

# openssl configuration file.

#

# The produced certificate will be valid for 1825 days (about 5 years)

#

echo

echo Generating Apache server self signed certificate...

echo

openssl req -outform PEM -new -key server.key -x509 -days 1825 -out server.crt

Figure 8: Sample apache_generate_cert.sh script


This script generates a RSA private key in file “server.key” and an X.509 self signed certificate in file “server.crt”.


First, launch this script using command:


  • sh apache_generate_cert.sh

It will generate private key, and prompt you for certificate properties:


  • Country code, usually required
  • State or province name, usually required
  • City, usually required
  • Organisation or company name, usually required
  • Organisational Unit name, usually optional
  • Common name (this is the DNS name or IP address of your server), required
  • An email address, usually optional

[[Image:]]


In our sample, we’ve generated self signed certificate for our server name “ocs.domain.tld”.


Next, you just have to copy server certificate file “server.crt” and server private key file “server.key” files into appropriate directories and update Apache/mod_ssl configuration files to use these files.


Here is a sample and minimalist Apache/mod_ssl configuration for using SSL under CentOS/Fedora/RedHat Linux. (server certificate is stored under “/etc/httpd/conf/ssl.crt” directory and server key is stored under “/etc/httpd/conf/ssl.key” directory).


NB: Generally, Apache/mod_ssl configuration is provided for your system. So, do not use following configuration if your system already has a configuration file for mod_ssl !


#

# This is the Apache server configuration file providing SSL support.

# It contains the configuration directives to instruct the server how to

# serve pages over an https connection. For detailing information about these

# directives see <URL:http://httpd.apache.org/docs-2.0/mod/mod_ssl.html>

#

# For the moment, see <URL:http://www.modssl.org/docs/> for this info.

# The documents are still being prepared from material donated by the

# modssl project.

#

# Do NOT simply read the instructions in here without understanding

# what they do. They're here only as hints or reminders. If you are unsure

# consult the online docs. You have been warned.

#


LoadModule ssl_module modules/mod_ssl.so


# Until documentation is completed, please check http://www.modssl.org/

# for additional config examples and module docmentation. Directives

# and features of mod_ssl are largely unchanged from the mod_ssl project

# for Apache 1.3.


#

# When we also provide SSL we have to listen to the

# standard HTTP port (see above) and to the HTTPS port

#

# To allow connections to IPv6 addresses add "Listen [::]:443"

#

Listen 0.0.0.0:443


#

# Some MIME-types for downloading Certificates and CRLs

#

AddType application/x-x509-ca-cert .crt

AddType application/x-pkcs7-crl .crl


# Pass Phrase Dialog:

# Configure the pass phrase gathering process.

# The filtering dialog program (`builtin' is a internal

# terminal dialog) has to provide the pass phrase on stdout.

SSLPassPhraseDialog builtin


##

## SSL Virtual Host Context

##


<VirtualHost _default_:443>


# Use separate log files:

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log


# SSL Engine Switch:

# Enable/Disable SSL for this virtual host.

SSLEngine on


# SSL Cipher Suite:

# List the ciphers that the client is permitted to negotiate.

# See the mod_ssl documentation for a complete list.

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP


# Server Certificate:

# Point SSLCertificateFile at a PEM encoded certificate. If

# the certificate is encrypted, then you will be prompted for a

# pass phrase. Note that a kill -HUP will prompt again. A test

# certificate can be generated with `make certificate' under

# built time. Keep in mind that if you've both a RSA and a DSA

# certificate you can configure both in parallel (to also allow

# the use of DSA ciphers, etc.)

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt


# Server Private Key:

# If the key is not combined with the certificate, use this

# directive to point at the key file. Keep in mind that if

# you've both a RSA and a DSA private key you can configure

# both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key


# SSL Engine Options:

# StdEnvVars:

# This exports the standard SSL/TLS related `SSL_*' environment variables.

# Per default this exportation is switched off for performance reasons,

# because the extraction step is an expensive operation and is usually

# useless for serving static content. So one usually enables the

# exportation for CGI and SSI requests only.

SSLOptions +StdEnvVars


# SSL Protocol Adjustments:

# The safe and default but still SSL/TLS standard compliant shutdown

# approach is that mod_ssl sends the close notify alert but doesn't wait for

# the close notify alert from client. When you need a different shutdown

# approach you can use one of the following variables:

# o ssl-unclean-shutdown:

# This forces an unclean shutdown when the connection is closed, i.e. no

# SSL close notify alert is send or allowed to received. This violates

# the SSL/TLS standard but is needed for some brain-dead browsers. Use

# this when you receive I/O errors because of the standard approach where

# mod_ssl sends the close notify alert.

# o ssl-accurate-shutdown:

# This forces an accurate shutdown when the connection is closed, i.e. a

# SSL close notify alert is send and mod_ssl waits for the close notify

# alert of the client. This is 100% SSL/TLS standard compliant, but in

# practice often causes hanging connections with brain-dead browsers. Use

# this only for browsers where you know that their SSL implementation

# works correctly.

# Notice: Most problems of broken clients are also related to the HTTP

# keep-alive facility, so you usually additionally want to disable

# keep-alive for those clients, too. Use variable "nokeepalive" for this.

# Similarly, one has to force some clients to use HTTP/1.0 to workaround

# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and

# "force-response-1.0" for this.

SetEnvIf User-Agent ".*MSIE.*" \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0


# Per-Server Logging:

# The home of a custom SSL log file. Use this when you want a

# compact non-error SSL logfile on a virtual host basis.

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


</VirtualHost>

Figure 9: Sample Apache/mod_ssl configuration file


Once you’ve configured your Apache web server, don’t forget to restart Apache daemon for changes to take effect.


Last, you have to install server certificate file “server.crt” on each client computer into OCS Inventory Agent installation directory, under the name “cacert.pem”.


Con Servidor OCS Inventory NG para Windows

XAMPP Apache distribution comes with a script “makecert.bat” for generating self signed certificates. This script is located under “INSTALL_PATH\xampp\apache” directory (where INSTALL_PATH is the installation folder of OCS Inventory NG Server)


@echo off

set OPENSSL_CONF=./bin/openssl.cnf


if not exist .\conf\ssl.crt mkdir .\conf\ssl.crt

if not exist .\conf\ssl.key mkdir .\conf\ssl.key


bin\openssl req -new -out server.csr

bin\openssl rsa -in privkey.pem -out server.key

bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365


set OPENSSL_CONF=

del .rnd

del privkey.pem

del server.csr


move /y server.crt .\conf\ssl.crt

move /y server.key .\conf\ssl.key


echo.

echo -----

echo Das Zertifikat wurde erstellt.

echo The certificate was provided.

echo.

Pause

Figure 10: XAMPP "makecert.bat" default script


This script generate self signed certificate usable for 365 days. If you want to increase certificate validity, you must update directive “-days 365” to specify in days new validity period (1825 days, about 5 years must be up a good value ;-).


Just double run script “makecert.bat”. It will generate a RSA private key and ask you for a password (at least 4 characters).


Enter password and confirm it.


[[Image:]]


Next, you will be prompted for certificate properties:


  • Country code, usually required
  • State or province name, usually required
  • City, usually required
  • Organisation or company name, usually required
  • Organisational Unit name, usually optional
  • Common name (this is the DNS name or IP address of your server), required
  • An email address, usually optional
  • A challenge password (must be empty, just press enter)
  • An optional company name

Finally, you will be prompted for private key password.


[[Image:]]


Now, self signed certificate is created and installed. Just restart Apache2 service for changes to take effect.


Last, you have to install server certificate file “INSTALL_PATH\xampp\apache\conf\ssl.crt\server.crt” on each client computer into OCS Inventory Agent installation directory, under the name “cacert.pem”.


Uso de PKI con Autoridad de Certificación

We assume that you’re already using an internal PKI or commercial one like Verisign.


However, if you don’t have an internal PKI, and don’t want to pay for certificates, you can use services provided by cacert.org (http://www.cacert.org), a free worldwide PKI provider. Using cacert.org services require that you register your email and DNS domain name, before to be able to request server certificate. See cacert.org manuals.


You may take a look at Pablo Iranzo Gómez excellent article (http://alufis35.uv.es/OCS-Inventory-Package-Deployment.html) for more detailled instructions about using cacert.org certificates in OCS Inventory NG.


Con Servidor OCS Inventory NG para Linux

Usually, Apache or mod_ssl packages come with sample scripts to generate certificates request to submit to a PKI provider.


However, we provide below a sample script using OpenSSL for generating a certificate request for use in Apache.


#!/bin/sh


#

# Generate server certificate request

#

# Generate 1024 bits RSA key, store private key in a

# no password protected PEM file server.key, store certificate

# request in a PEM file server.csr, using system default

# configuration file

#

# The produced key will be valid for 1825 days (5 years)

#

echo

echo Generating server private key and certificate request...

echo

openssl req -newkey rsa:1024 -outform PEM -out server.csr -keyout server.key -keyform PEM \

-days 1825 -nodes

Figure 11: Sample apache_request_cert.sh script


This script generates a RSA private key in file “server.key” and a certificate request in file “server.csr”.


First, launch this script using command:


  • sh apache_request_cert.sh

It will generate private key, and prompt you for certificate request properties:


  • Country code, usually required
  • State or province name, usually required
  • City, usually required
  • Organisation or company name, usually required
  • Organisational Unit name, usually optional
  • Common name (this is the DNS name or IP address of your server), required
  • An email address, required to receive certificate generated by Certificate Authority.
  • An optional challenge password
  • An optional company name

[[Image:]]


In our sample, we’ve generated certificate request for our server name “ocs.domain.tld”.


Next, you must transmit your certificate request “server.csr” to your PKI Certificate Authority.


Once you’ve received your server certificate from Certificate Authority, you just have to copy server certificate file “server.crt” and server private key “server.key” files into appropriate directories, and update Apache/mod_ssl configuration files to use these files.


You must also retreive Certificate Authority root certificate into file “ca_root.crt” to specify it in Apache configuration.


Here is a sample and minimalist Apache/mod_ssl configuration for using SSL under CentOS/Fedora/RedHat Linux. (server certificate is stored under “/etc/httpd/conf/ssl.crt” directory and server key is stored under “/etc/httpd/conf/ssl.key” directory).


NB: Generally, Apache for Win32 comes with a predefined Apache/mod_ssl configuration file. So, do not use following configuration if your system already has a configuration file for mod_ssl !


#

# This is the Apache server configuration file providing SSL support.

# It contains the configuration directives to instruct the server how to

# serve pages over an https connection. For detailing information about these

# directives see <URL:http://httpd.apache.org/docs-2.0/mod/mod_ssl.html>

#

# For the moment, see <URL:http://www.modssl.org/docs/> for this info.

# The documents are still being prepared from material donated by the

# modssl project.

#

# Do NOT simply read the instructions in here without understanding

# what they do. They're here only as hints or reminders. If you are unsure

# consult the online docs. You have been warned.

#


LoadModule ssl_module modules/mod_ssl.so


# Until documentation is completed, please check http://www.modssl.org/

# for additional config examples and module docmentation. Directives

# and features of mod_ssl are largely unchanged from the mod_ssl project

# for Apache 1.3.


#

# When we also provide SSL we have to listen to the

# standard HTTP port (see above) and to the HTTPS port

#

# To allow connections to IPv6 addresses add "Listen [::]:443"

#

Listen 0.0.0.0:443


#

# Some MIME-types for downloading Certificates and CRLs

#

AddType application/x-x509-ca-cert .crt

AddType application/x-pkcs7-crl .crl


# Pass Phrase Dialog:

# Configure the pass phrase gathering process.

# The filtering dialog program (`builtin' is a internal

# terminal dialog) has to provide the pass phrase on stdout.

SSLPassPhraseDialog builtin


##

## SSL Virtual Host Context

##


<VirtualHost _default_:443>


# Use separate log files:

ErrorLog logs/ssl_error_log

TransferLog logs/ssl_access_log


# SSL Engine Switch:

# Enable/Disable SSL for this virtual host.

SSLEngine on


# SSL Cipher Suite:

# List the ciphers that the client is permitted to negotiate.

# See the mod_ssl documentation for a complete list.

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP


# Server Certificate:

# Point SSLCertificateFile at a PEM encoded certificate. If

# the certificate is encrypted, then you will be prompted for a

# pass phrase. Note that a kill -HUP will prompt again. A test

# certificate can be generated with `make certificate' under

# built time. Keep in mind that if you've both a RSA and a DSA

# certificate you can configure both in parallel (to also allow

# the use of DSA ciphers, etc.)

SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt


# Server Private Key:

# If the key is not combined with the certificate, use this

# directive to point at the key file. Keep in mind that if

# you've both a RSA and a DSA private key you can configure

# both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key


# Certificate Authority (CA):

# Set the CA certificate verification path where to find CA

# certificates for client authentication or alternatively one

# huge file containing all of them (file must be PEM encoded)

# Note: Inside SSLCACertificatePath you need hash symlinks

# to point to the certificate files. Use the provided

# Makefile to update the hash symlinks after changes.

#SSLCACertificatePath /etc/httpd/conf/ssl.crt

SSLCACertificateFile /usr/share/ssl/certs/ca_root.crt


# SSL Engine Options:

# StdEnvVars:

# This exports the standard SSL/TLS related `SSL_*' environment variables.

# Per default this exportation is switched off for performance reasons,

# because the extraction step is an expensive operation and is usually

# useless for serving static content. So one usually enables the

# exportation for CGI and SSI requests only.

SSLOptions +StdEnvVars


# SSL Protocol Adjustments:

# The safe and default but still SSL/TLS standard compliant shutdown

# approach is that mod_ssl sends the close notify alert but doesn't wait for

# the close notify alert from client. When you need a different shutdown

# approach you can use one of the following variables:

# o ssl-unclean-shutdown:

# This forces an unclean shutdown when the connection is closed, i.e. no

# SSL close notify alert is send or allowed to received. This violates

# the SSL/TLS standard but is needed for some brain-dead browsers. Use

# this when you receive I/O errors because of the standard approach where

# mod_ssl sends the close notify alert.

# o ssl-accurate-shutdown:

# This forces an accurate shutdown when the connection is closed, i.e. a

# SSL close notify alert is send and mod_ssl waits for the close notify

# alert of the client. This is 100% SSL/TLS standard compliant, but in

# practice often causes hanging connections with brain-dead browsers. Use

# this only for browsers where you know that their SSL implementation

# works correctly.

# Notice: Most problems of broken clients are also related to the HTTP

# keep-alive facility, so you usually additionally want to disable

# keep-alive for those clients, too. Use variable "nokeepalive" for this.

# Similarly, one has to force some clients to use HTTP/1.0 to workaround

# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and

# "force-response-1.0" for this.

SetEnvIf User-Agent ".*MSIE.*" \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0


# Per-Server Logging:

# The home of a custom SSL log file. Use this when you want a

# compact non-error SSL logfile on a virtual host basis.

CustomLog logs/ssl_request_log \

"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


</VirtualHost>

Figure 12: Sample Apache/mod_ssl configuration file


Once you’ve configured your Apache web server, don’t forget to restart Apache daemon for changes to take effect.


Last, you have to install Certificate Authority root certificate file “ca_root.crt” on each client computer into OCS Inventory Agent installation directory, under the name “cacert.pem”.


Con Servidor OCS Inventory NG para Windows

We provide below a sample script using OpenSSL for generating a certificate request for use in XAMPP Apache.


@echo off

REM

REM Generate server certificate request

REM

REM Generate 1024 bits RSA key, store private key in a

REM no password protected PEM file server.key, store certificate

REM request in a PEM file server.csr, using system default

REM configuration file

REM

REM The produced key will be valid for 1825 days (5 years)

REM

echo.

echo Generating server private key and certificate request...

echo.

set OPENSSL_CONF=./bin/openssl.cnf

bin\openssl req -newkey rsa:1024 -outform PEM -out server.csr -keyout server.key -keyform PEM -days 1825 -nodes

Figure 13: Sample apache_request_cert.sh script


This script generates a RSA private key in file “server.key” and a certificate request in file “server.csr”.


First, copy this script into “INSTALL_PATH\xampp\apache” directory (where “INSTALL_PATH is the installation folder of OCS Inventory NG) and launch it.


It will generate private key, and prompt you for certificate request properties:


  • Country code, usually required
  • State or province name, usually required
  • City, usually required
  • Organisation or company name, usually required
  • Organisational Unit name, usually optional
  • Common name (this is the DNS name or IP address of your server), required
  • An email address, required to receive certificate generated by Certificate Authority.
  • An optional challenge password
  • An optional company name

[[Image:]]


In our sample, we’ve generated certificate request for our server name “ocs.domain.tld”.


Next, you must transmit your certificate request “server.csr” to your PKI Certificate Authority.


Once you’ve received your server certificate from Certificate Authority, you just have to copy server certificate file “server.crt” to directory “INSTALL_PATH\xampp\apache\conf\ssl.crt” and server private key “server.key” files into to directory “INSTALL_PATH\xampp\apache\conf\ssl.key”.


You must also retreive Certificate Authority root certificate into file “ca_root.crt” to specify it in Apache configuration. Store this file into directory “INSTALL_PATH\xampp\apache\conf\ssl.crt” under name “ca-bundle.crt”.


Update Apache/mod_ssl configuration by editing file ““INSTALL_PATH\xampp\apache\conf\extra\httpd-ssl.conf”, and uncommenting line 132 (remove # character at beginning) as follow.


# Certificate Authority (CA):

# Set the CA certificate verification path where to find CA

# certificates for client authentication or alternatively one

# huge file containing all of them (file must be PEM encoded)

# Note: Inside SSLCACertificatePath you need hash symlinks

# to point to the certificate files. Use the provided

# Makefile to update the hash symlinks after changes.

#SSLCACertificatePath conf/ssl.crt

SSLCACertificateFile conf/ssl.crt/ca-bundle.crt

Figure 14: Sample Apache/mod_ssl configuration file


Once you’ve configured your Apache web server, don’t forget to restart Apache2 service for changes to take effect.


Last, you have to install Certificate Authority root certificate file “ca_root.crt” on each client computer into OCS Inventory Agent installation directory, under the name “cacert.pem”.

Ejemplo: Instalando nueva versión de agente del Servicio para Windows

Cree un archivo ZIP “OcsAgentSetup.zip” que incluya el archivo “OcsAgentSetup.exe”.

Luego, conéctese a la consola de Administración y vaya al menú “Instalar/Generar (Build)”.

  • Fill in package name, for example “Ocs Agent Service 4031”,
  • select target operating system “Windows”,
  • select protocol “HTTP”,
  • select priority “5”,
  • browse to select ZIP file,
  • select action “Launch”
  • and fill in file name with Service Agent setup command line switches, for example “OcsAgentSetup.exe /S /NOSPLASH /UPGRADE /NP /DEBUG /SERVER:my_ocs_server.domain.tld” (/S to run installer in silent mode, /NOSPLASH to disable installer spash screen, /UPGRADE to indicate that you’re upgrading an already installed Service Agent, /NP to disable use of IE proxy settings, /DEBUG to enable creation of log files, /SERVER to indicate that agent must connect to server at address “my_ocs_server.domain.tld”).

Nota: No olvide el parámetro /UPGRADE para permitir actualizar un agente OCS Inventory NG agent existente instalado como un servicio.

[[Image:]]

Y valide haciendo clic en el botón “Enviar”.

Luego seleccione el tamaño del fragmento moviendo el selector (slider), por ejemplo 500 Kb y haga clic en el botón “Enviar”.

[[Image:]]

Ahora, el paquete de instalación queda creado. Tiene que activarlo.

Vaya al menu “Instalar/Activar”.

[[Image:]]

Haga clic en el botón “Activar” en la línea correspondiente.

  • Llene en la url HTTPS dónde los agentes pueden descargar el archivo de metadatos INFO utilizando HTTPS.
  • Llene en la url HTTP dónde los agentes pueden descargar los archivos de fragmentos utilizando HTTP.

Y haga clic en el botón “Enviar”.

[[Image:]]

Ahora, el paquete está listo para ser afectado a los computadores.

Vaya al menú “Buscar”, busque los computadores que tengan el campo Operating System igual a “Windows (ALL)” y haga clic en el botón “Buscar”.

[[Image:]]

Luego, haga clic en la opción “Instalar” en la línea “Procesamiento en masa”.

[[Image:]]

Para terminar, haga clic en el botón “Afectar” en la línea correspondiente para el paquete que desee.

[[Image:]]

!Gracias a todos!