Mis Herramientas para Desarrollo y Diseño Web con GNU/Linux

Categorías: Aplicaciones

Luego de terminar el artículo donde les hablaba de como añadir un Shortcode a nuestro tema de Wordpress, se me ocurrió compartir con ustedes cuales son las herramientas que uso para diseño y desarrollo web en GNU/Linux (y ahora mismo en Windows  8, pero esa es otra historia).

Sin querer abordar mucho en las ventajas/desventajas de cada una de ellas, les puedo decir que las vengo usando hace más de 5 años y hasta el momento, no he necesitado usar aplicaciones privativas que sean homólogas.

Herramienta de Diseño Web

Aunque hay varias herramientas para Diseño gráfico en GNU/Linux (y repito en Windows), yo siempre uso 2 en específico: GIMP e Inkscape.

Con Inkscape hago todo lo que tiene que ver con el maquetado y creación de gráficos 2D para los sitios. Es más, casi toda la apariencia de como se verá el sitio (el Mockup) lo hago con esta herramienta.

Inkscape en Windows

Con GIMP lo que hago es el trabajo con fondos, la edición de las imágenes que voy a utilizar y el cambio de formato en caso de ser necesario.

GIMP en Windows

Antes de que me salten algunos usuarios al cuello, pongo Screenshots de las aplicaciones en Windows, porque es lo que estoy usando ahora por males mayores. Lo siento

Herramientas de Desarrollo Web

No soy de los que usa IDEs de Desarrollo, prefiero editores de Textos porque para lo que hago, voy sobrado con ellos. Si me preguntan recomendaría BlueFish, pero actualmente me siento muy a gusto con Brackets.

Brackets en Windows

Prefiero este último por varios motivos, entre ellos, porque está orientado específicamente a HTML5, CSS3 y JS, por lo que el autocompletado contiene las etiquetas HTML y sus propiedades muy actualizadas.

Podría usar también SublimeText, de hecho siempre lo tengo instalado, pues posee algunas opciones que me acomodan mucho el trabajo como por ejemplo Buscar y Reemplazar en todos los archivos del proyecto.

En Resumen

Lo mejor de todas las herramientas que he mencionado anteriormente es que son multiplataforma y OpenSource. En estos días me he visto obligado a usar Windows y no he dejado de trabajar gracias a ello.

Lo que más me emociona de este mundo, es que no es necesario estudiar una carrera a fin, solo tener buenas ideas y excelentes recursos a la mano. Actualmente podemos aprender mucho sobre Desarrollo y Diseño Web en Internet.

Recientemente descubrí muy buenos Tips en el Blog de MisterMonkey una agencia donde trabaja un amigo, quienes ofrecen servicios de desarrollo y diseño web en Granada, pero hay muchísimos más sitios con material interesante por toda la web.

¿Que otras herramientas no he mencionado y les recomiendo? Para gráficos Krita, y para codear Geany, KATE y VIM. ¿Alguna recomendación para mi?

Crear Shortcodes para nuestro tema de Wordpress

Desde que comenzamos con este proyecto, siempre quisimos que tuviese nuestro propio sello, y es por ello que la segunda plantilla que usamos en DesdeLinux, fue creada por nosotros al 100%.

Luego le siguieron otras versiones, y si bien podemos comprar o contratar determinados servicios web para crear nuestros diseños como los de EstudioDWeb.com, o comprar plantillas ya creadas en ThemeForest.net, siempre hemos querido tener lo nuestro, adaptado a nuestras necesidades y pasarnos por DesarrolloWeb.com puede ser de ayuda 😀

De todas formas, me apasiona esto del Diseño y Desarrollo Web, y ya estoy trabajando en el nuevo tema para DesdeLinux y les mostraré unos Pantallazos de como va quedando.

La idea es no salirnos de lo que ya estamos adaptados, por lo que muchos elementos permanecen igual o de forma parecida. Empiezo por la página de inicio

Y así se verían los artículos:

Como ven, está quedando justo a nuestra medida y hemos incluido nuevos ShortCodes para la elaboración de los artículos.

Es por ello que se me ocurrió compartir con ustedes como crear uno de ellos (el de información) por si desean incluirlos en sus temas de Wordpress. O sea, algo como esto:

Este será el ShortCode de ejemplo

No soy experto en la programación con este CMS, por lo que no intentaré explicar por qué y cómo funciona de esta forma, solo les mostraré como hacerlo y punto.

Para ello hacemos uso de “la navaja suiza” de Wordpress, me refiero al fichero function.php que normalmente encontramos en casi todos los temas.

Ejemplo del Function.php con los ShortCodes de DesdeLinux

Lo que haremos en este fichero es añadir la estructura de nuestro ShortCode y por supuesto, la etiqueta que lo muestra. Así que vamos a ello.

Dentro del Function.php

Dentro de nuestro fichero function.php lo que pondremos será la estructura HTML del ShortCode, pero no es simplemente poner las etiquetas HTML así como así. Nos quedaría algo como esto:

// Info
function infobox( $atts, $content = null, $code = "" ) {
    $return = '<div class="alert-info">';
    $return .= $content;
    $return .= '</div>';
    return $return;
}

// El ShortCode
add_shortcode( 'info', 'infobox' );

De acá aclaramos un par de cosas. Primero, cuando usamos dos barras comentamos la línea, por lo tanto // Info es solo un comentario.

El nombre de la función, en este caso infobox puede cambiarse por el que queramos, pero debe coincidir con el nombre que usamos en la última línea.

En cada $return devolvemos lo que viene siendo las etiquetas HTML, y hay que tener en cuenta que después del primero, hay que añadir un punto delante del signo igual y la línea termina con un signo de punto y coma

Ejemplo:

$return .= $content;

La variable $content que es donde va el contenido que pongamos en el ShortCode por defecto devolverá un valor nulo si no ponemos nada.

Ahora, el nombre del ShortCode es lo que establecemos con:

add_shortcode( 'info', 'infobox' );

Donde se puede cambiar info por lo que queramos. Ahora, para que quede como en el ejemplo debemos poner:

[ info ]Este será el ShortCode de ejemplo[ /info ]

Aunque claro, sin los espacios, los cuales pongo porque evidentemente se activaría el ShortCode.

Estilo del ShortCode

Si se fijan en la línea más arriba, sin el código PHP ni las variables, el ShortCode en HTML puro sería algo como esto:

<div class="alert-info"></div>

Por lo que solo nos queda aplicarle el estilo CSS.

.alert.alert-info
{
    background:#d9edf7 url(info.png) no-repeat 7px 50%;
    border-radius:4px;
    border:1px solid #bce8f1;
    color:#3a87ad;
    font-size:14px;
    margin:15px 15px;
    padding:15px 15px 15px 50px
    text-align:left
}

Y eso es todo.. Repito, no soy programador ni nada por el estilo, y la explicación que he dado es como yo entiendo que funciona el ShortCode 😛

Debian 9.0 llevará por nombre Zurg

Categorías: Noticias

Como muchos saben, a las versiones de Debian GNU/Linux le ponen nombres de los personajes de Toy Story (paradójico si tenemos en cuenta que Steve Jobs está detrás de esta pelicula :D) y esta vez le tocó el turno a Zurg, el villano no tan villano de la historia 😀

La noticia viene de la mano de uno de los desarrolladores de Debian, Dimitri John Ledkov, quién al parecer, es una de las personas (o la persona) que tiene que ver con el Soporte de Multi-Arquitectura para KFreeBSD.

¿Qué les parece?

KPhotoAlbum: Organiza tus imágenes y videos con una sola aplicación

Categorías: Aplicaciones

En GNU/Linux tenemos varias aplicaciones para organizar nuestras fotos o videos, como son el caso de F-Spot o DigiKam (del cual nos habló KZKGGaara en otro artículo).

Y por suerte para nosotros (y especialmente los usuarios de KDE) tenemos varias alternativas como las que les presento hoy: KPhotoAlbum, un software de catalogación digital de imágenes que soporta anotación, exploración, búsqueda y visualización de imágenes y videos digitales.

Instalación de KPhotoAlbum

En ArchLinux sería:

sudo pacman -S kphotoalbum

Mientras que en Debian, Ubuntu o derivados:

sudo apt-get install kphotoalbum

Si usas alguna otra distro, simplemente busca por el nombre del paquete (kphotoalbum) e instálalo.

Características de KPhotoAlbum

Empiezo diciendo que esta aplicación escrita en Qt y tiene un montón de opciones, y aunque parezca una aplicación simple, por debajo tiene un funcionamiento bastante complejo.

La característica principal de KPhotoAlbum es podemos insertar anotaciones en nuestras imágenes, por ejemplo, donde se tomó la fotografía, quienes estaban, en que lugar, etc … Y esto podemos hacerlo tanto de forma individual como en grupos.

¿no entienden del todo? … bueno, imaginen que tienen algún álbum de fotos, bien tomadas por ustedes con su smartphone o tablet, sacadas de algún photo booth para bodas, scanneadas, etc, y desean agregar comentarios en cada foto (apuntes, descripción, etc) para que luego al pasar el tiempo, recuerden cada detalle de cómo se tomó la foto, quiénes estaban ahí, o sucesos graciosos o interesantes que presenciaron.

Esto nos permitirá conectar cada elemento en una red de datos bastante compleja, algo así como Facebook, que te asocia con otras personas según la información que ofrezcas (lugares, fechas, etc..)

En la ventana del navegador se pueden ver las categorías que hemos puesto al anotar nuestras imágenes y videos. Además hay elementos para la búsqueda basándose en la información EXIF de las imágenes. Como es lógico, podemos navegar por nuestro disco duro y ver las imágenes en miniatura reales.

Como dije anteriormente no solo organiza nuestras fotos, sino que también organiza nuestros videos y nos permite exportarlos en diferentes formatos, y por supuesto, reproducirlos.

En la medida que vamos añadiendo y catalogando nuestros ficheros, abajo se mostrarán unas barras individuales que indican cuántas imágenes hay en un plazo dado.

Y para no perdernos, debajo de la línea de tiempo, veremos un Breadcrumb (migajas de pan) que nos indican donde nos encontramos.

KPhotoAlbum nos ofrece dos posibilidades para generar código HTML de nuestros álbumes de fotos. Se imaginan andar por calle, tomarse alguna foto con su pareja o amigo en su celular, algún fotomatón o algo similar, luego ir a casa y generar el HTML para publicar las fotos online… O_O

A groso modo, entre las posibilidades que nos brinda esta aplicación tenemos:

  • Ver presentación de fotos.
  • Mostrar fotos según parámetros establecidos.
  • Unificar archivos duplicados.
  • Recalcular la suma de comprobación de los archivos.
  • Volver a crear base de datos de búsquedas EXIF.
  • Generar miniaturas.
  • Generar estadísticas.
  • Muchísimos Complementos para Exportar/Importar/Editar imágenes.
  • Y más, mucho más..

Servicio de Directorio con LDAP [4]: OpenLDAP (I)

Categorías: Redes/Servidores

¡Hola Amigos!. Entremos en materia, y como siempre recomendamos lean los tres artículos anteriores de la serie:

El DNS, DHCP y NTP son los servicios mínimos indispensables para que nuestro sencillo directorio basado en OpenLDAP nativo, funcione adecuadamente en el Debian 6.0 “Squeeze”, o en el Ubuntu 12.04 LTS “Precise Pangolin”.

Red de ejemplo:

Lan: 10.10.10.0/24
Dominio: amigos.cu
Servidor: mildap.amigos.cu
Sistema Operativo Servidor: Debian 6 "Squeeze
Dirección IP del servidor: 10.10.10.15
Cliente 1: debian7.amigos.cu
Cliente 2: raring.amigos.cu
Cliente 3: suse13.amigos.cu
Cliente 4: seven.amigos.cu

En la Primera Parte veremos:

  • Instalación del OpenLDAP (slapd 2.4.23-7.3)
  • Comprobaciones después de la instalación
  • Indices a tener en cuenta
  • Reglas del Control de Acceso a los datos
  • Generación de Certificados TLS en Squeeze

mientras que en la Segunda Parte continuaremos con:

  • Autenticación local de usuarios
  • Poblar la base de datos
  • Administrar la base de datos mediante utilidades de consola
  • Resumen hasta aquí…

Instalación del OpenLDAP (slapd 2.4.23-7.3)

El servidor OpenLDAP se instala mediante el paquete slapd. También debemos instalar el paquete ldap-utils, el cual nos proporciona algunas herramientas del lado del cliente, así como utilidades propias del OpenLDAP.

:~# aptitude install slapd ldap-utils

Durante el proceso de instalación, el debconf nos preguntará por la contraseña del administrador o usuario “admin“. También se instalan una serie de dependencias; se crea el usuario openldap; se crea la configuración inicial del servidor, así como el directorio LDAP.

En las versiones anteriores del OpenLDAP, la configuración del demonio slapd se realizaba totalmente mediante el archivo /etc/ldap/slapd.conf. En la versión que estamos usando y posteriores, la configuración se realiza en el mismo slapd, y a tal propósito se le dedica un DITDirectory Information Tree” o Árbol de Información del Directorio, por separado.

El método de configuración conocido como RTCReal Time Configuration” Configuración en Tiempo Real, o como el Método cn=config, nos permite configurar de forma dinámica al slapd sin que sea necesario reiniciar el servicio.

La base de datos de la configuración consiste en una colección de archivos de texto en formato LDIFLDAP Data Interchange Format” Formato LDAP para el Intercambio de Datos, localizados en la carpeta /etc/ldap/slapd.d.

Para tener una idea de la organización de la carpeta slapd.d, ejecutemos:

:~# ls -lR /etc/ldap/slapd.d/
/etc/ldap/slapd.d/:
total 8
drwxr-x--- 3 openldap openldap 4096 feb 16 11:08 cn=config
-rw------- 1 openldap openldap  407 feb 16 11:08 cn=config.ldif

/etc/ldap/slapd.d/cn=config:
total 28
-rw------- 1 openldap openldap  383 feb 16 11:08 cn=module{0}.ldif
drwxr-x--- 2 openldap openldap 4096 feb 16 11:08 cn=schema
-rw------- 1 openldap openldap  325 feb 16 11:08 cn=schema.ldif
-rw------- 1 openldap openldap  343 feb 16 11:08 olcBackend={0}hdb.ldif
-rw------- 1 openldap openldap  472 feb 16 11:08 olcDatabase={0}config.ldif
-rw------- 1 openldap openldap  586 feb 16 11:08 olcDatabase={-1}frontend.ldif
-rw------- 1 openldap openldap 1012 feb 16 11:08 olcDatabase={1}hdb.ldif

/etc/ldap/slapd.d/cn=config/cn=schema:
total 40
-rw------- 1 openldap openldap 15474 feb 16 11:08 cn={0}core.ldif
-rw------- 1 openldap openldap 11308 feb 16 11:08 cn={1}cosine.ldif
-rw------- 1 openldap openldap  6438 feb 16 11:08 cn={2}nis.ldif
-rw------- 1 openldap openldap  2802 feb 16 11:08 cn={3}inetorgperson.ldif

Si observamos un poco la salida anterior, vemos que el Backend utilizado en Squeeze es la base de datos tipo hdb, la cual es una variante de bdb “Berkeley Database”, y que es totalmente jerárquica y soporta el renombrado de sub-árboles. Para conocer más sobre los posibles Backends que soporta OpenLDAP, visite http://es.wikipedia.org/wiki/OpenLDAP.

También vemos que se utilizan tres bases de datos separadas, o sea, una dedicada a la configuración, otra al Frontend, y la última que es la base de datos hdb en si.

Por otra parte, slapd se instala por defecto con los esquemas Core, Cosine, Nis e Inetorgperson.

Comprobaciones después de la instalación

En una terminal ejecutamos y leemos con calma las salidas. Comprobaremos, sobre todo con el segundo comando, la configuración deducida de listar la carpeta slapd.d.

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config | more
:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
dn: cn=config
dn: cn=module{0},cn=config
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config
dn: olcBackend={0}hdb,cn=config
dn: olcDatabase={-1}frontend,cn=config
dn: olcDatabase={0}config,cn=config
dn: olcDatabase={1}hdb,cn=config

Explicación de cada salida:

  • cn=config: Parámetros globales.
  • cn=module{0},cn=config: Módulo cargado de forma dinámica.
  • cn=schema,cn=config: Contiene el hard-coded al nivel de los esquemas del sistema.
  • cn={0}core,cn=schema,cn=config: El hard-coded del esquema del núcleo.
  • cn={1}cosine,cn=schema,cn=config: El esquema Cosine.
  • cn={2}nis,cn=schema,cn=config: El esquema Nis.
  • cn={3}inetorgperson,cn=schema,cn=config: El esquema Inetorgperson.
  • olcBackend={0}hdb,cn=config: Backend de almacenamiento de datos tipo hdb.
  • olcDatabase={-1}frontend,cn=config: Frontend de la base de datos y parámetros por defecto para las otras bases de datos.
  • olcDatabase={0}config,cn=config: Base de datos de la configuración del slapd (cn=config).
  • olcDatabase={1}hdb,cn=config: Nuestra instancia de la base de datos (dc=amigos,dc=cu)
:~# ldapsearch -x -LLL -H ldap:/// -b dc=example,dc=com dn
dn: dc=amigos,dc=cu
dn: cn=admin,dc=amigos,dc=cu
  • dc=amigos,dc=cu: Base del DIT Árbol de Información del Directory
  • cn=admin,dc=amigos,dc=cu: Administrador (rootDN) del DIT declarado durante la instalación.

Nota: El sufijo base dc=amigos, dc=cu, lo tomó el debconf durante la instalación a partir del FQDN del servidor mildap.amigos.cu.

Indices a tener en cuenta

El indexado de las entradas se realiza para mejorar el rendimiento de las búsquedas sobre el DIT, con criterios de filtrado. Los índices que consideraremos son los mínimos recomendados acorde a los atributos declarados en los esquemas por defecto.

Para modificar dinámicamente los índices en la base de datos, creamos un archivo de texto en formato LDIF, y posteriormente lo agregamos a la base de datos. Creamos el archivo olcDbIndex.ldif y lo dejamos con el siguiente contenido:

:~# nano olcDbIndex.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
-
add: olcDbIndex
olcDbIndex: gidNumber eq
-
add: olcDbIndex
olcDbIndex: memberUid eq,pres,sub
-
add: olcDbIndex
olcDbIndex: loginShell eq
-
add: olcDbIndex
olcDbIndex: uid pres,sub,eq
-
add: olcDbIndex
olcDbIndex: cn pres,sub,eq
-
add: olcDbIndex
olcDbIndex: sn pres,sub,eq
-
add: olcDbIndex
olcDbIndex: givenName,ou pres,eq,sub
-
add: olcDbIndex
olcDbIndex: displayName pres,sub,eq
-
add: olcDbIndex
olcDbIndex: default sub
-
add: olcDbIndex
olcDbIndex: mail eq,subinitial
-
add: olcDbIndex
olcDbIndex: dc eq

Adicionamos los índices a la base de datos y comprobamos la modificación:

:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcDbIndex.ldif

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcDatabase={1}hdb)' olcDbIndex

dn: olcDatabase={1}hdb,cn=config
olcDbIndex: objectClass eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: loginShell eq
olcDbIndex: uid pres,sub,eq
olcDbIndex: cn pres,sub,eq
olcDbIndex: sn pres,sub,eq
olcDbIndex: givenName,ou pres,eq,sub
olcDbIndex: displayName pres,sub,eq
olcDbIndex: default sub
olcDbIndex: mail eq,subinitial
olcDbIndex: dc eq

Reglas del Control de Acceso a los datos

Se denomina Control de Acceso a las reglas que se establecen para que los usuarios puedan leer, modificar, agregar y borrar datos en la base de datos del Directorio, mientras que denominaremos Listas de Control de Acceso o “ACL Access Control List” a las directivas que configuran a las reglas.

Para conocer cuales ACLs se declararon por defecto durante el proceso de instalación del slapd, ejecutamos:

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcDatabase={1}hdb)' olcAccess

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcDatabase={-1}frontend)' olcAccess

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcDatabase={0}config)' olcAccess

:~# ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcAccess=*)' olcAccess olcSuffix

Cada uno de los comandos anteriores nos mostrarán las ACLs que hasta ahora tenemos declaradas en nuestro Directorio. Específicamente, el último comando las muestra todas, mientras que los tres primeros nos dan las reglas de control de acceso a los tres DIT involucrados en nuestro slapd.

Sobre el tema de las ACLs y para no hacer un artículo mucho más largo, recomendamos la lectura de las páginas del manual man slapd.access.

Para garantizar el acceso de los usuarios y administradores a actualizar su entradas de loginShell y Gecos, adicionaremos la siguiente ACL:

## Creamos el archivo olcAccess.ldif y lo dejamos con el siguiente contenido
:~# nano olcAccess.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {1}to attrs=loginShell,gecos
  by dn="cn=admin,dc=amigos,dc=cu" write
  by self write
  by * read

## Adicionamos la ACL
:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f ./olcAccess.ldif

# Comprobamos los cambios
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \
cn=config '(olcAccess=*)' olcAccess olcSuffix

Generación de Certificados TLS en Squeeze

Para tener una autenticación segura con el servidor OpenLDAP, debemos hacerla mediante una sesión encriptada la cual podemos lograrla mediante el uso del TLS “Transport Layer Security” o Capa de Transporte Segura.

El servidor OpenLDAP y sus clientes son capaces de utilizar el framework TLS para proveer la protección referente a la integridad y la confidencialidad, así como dar el soporte para una autenticación LDAP segura mediante el mecanismo SASL “Simple Authentication and Security Layer“ Externo.

Los servidores OpenLDAP modernos perfieren el uso de */StartTLS/* o Iniciar una Capa Segura de Transporte al protocolo /LDAPS:///, el cual está obsoleto. Cualquier duda, visite *Start TLS v. ldaps://* en http://www.openldap.org/faq/data/cache/605.html

Basta con dejar como se instala por defecto el archivo /etc/default/slapd con la declaración SLAPD_SERVICES=”ldap:/// ldapi:///”, con el objetivo de emplear un canal encriptado entre el cliente y el servidor, y las propias aplicaciones auxiliares para administrar el OpenLDAP que se instalen localmente.

El método aquí descrito, basado en los paquetes gnutls-bin y ssl-cert es válido para el Debian 6 “Squeeze” y también para el Ubuntu Server 12.04. Para el Debian 7 “Wheezy” se emplea otro método basado en OpenSSL.

La generación de los certificados en Squeeze se realiza de la siguiente forma:

1.- Instalamos los paquetes necesarios
:~# aptitude install gnutls-bin ssl-cert

2.- Creamos la Clave Primaria para la Autoridad del Certificado
:~# sh -c "certtool --generate-privkey > /etc/ssl/private/cakey.pem"

3.- Creamos una plantilla para definir el CA (Certificate Authority)
:~# nano /etc/ssl/ca.info
cn = Amigos Cubanos
ca
cert_signing_key

4.- Creamos el Certificado CA Self Signed o Auto-Firmado para los clientes
:~# certtool --generate-self-signed \
--load-privkey /etc/ssl/private/cakey.pem \
--template /etc/ssl/ca.info \
--outfile /etc/ssl/certs/cacert.pem

5.- Generamos una Clave Privada para el Servidor
:~# certtool --generate-privkey \
--bits 1024 \
--outfile /etc/ssl/private/mildap-key.pem

Nota: Sustituya "mildap" en el nombre del archivo anterior por el de su
propio servidor. Nombrar el Certificado y la Clave, tanto para el servidor
como para el servicio que la utiliza, nos ayuda a mantener las cosas claras.

6.- Creamos el archivo /etc/ssl/mildap.info con el siguiente contenido:
:~# nano /etc/ssl/mildap.info
organization = Amigos Cubanos
cn = mildap.amigos.cu
tls_www_server
encryption_key
signing_key
expiration_days = 3650

Nota: En el contenido anterior declaramos que el certificado es válido
para un período de tiempo de 10 años. El parámetro debemos ajustarlo a
nuestras conveniencias.

7.- Creamos el Certificado del Servidor
:~# certtool --generate-certificate \
--load-privkey /etc/ssl/private/mildap-key.pem \
--load-ca-certificate /etc/ssl/certs/cacert.pem \
--load-ca-privkey /etc/ssl/private/cakey.pem \
--template /etc/ssl/mildap.info \
--outfile /etc/ssl/certs/mildap-cert.pem

Hasta aquí tenemos generados los archivos necesarios.Sólo nos resta adicionar al Directorio la ubicación del Certificado Auto Firmado cacert.pem; la del Certificado del Servidor mildap-cert.pem; y la de la Clave Privada del Servidor mildap-key.pem. También debemos ajustar los permisos y el propietario de los archivos generados.

:~# nano /etc/ssl/certinfo.ldif
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/mildap-cert.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/mildap-key.pem

8.- Adicionamos
:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/ssl/certinfo.ldif

9.- Ajustamos propietario y permisos
:~# adduser openldap ssl-cert
:~# chgrp ssl-cert /etc/ssl/private/mildap-key.pem
:~# chmod g+r /etc/ssl/private/mildap-key.pem
:~# chmod o-r /etc/ssl/private/mildap-key.pem

El certificado cacert.pem es el que debemos copiar en cada cliente. Para que en el propio servidor se utilice éste certificado, debemos declararlo en el archivo /etc/ldap/ldap.conf. Para ello, modificamos el archivo y lo dejamos con el siguiente contenido:

:~# nano /etc/ldap/ldap.conf
BASE            dc=amigos,dc=cu  
URI             ldap://mildap.amigos.cu
TLS_CACERT      /etc/ssl/certs/cacert.pem

Finalmente y también como comprobación, reiniciamos el servicio slapd y revisamos la salida del syslog del servidor, para conocer si el servicio se reinició adecuadamente utilizando el certificado recién declarado.

:~# service slapd restart
:~# tail /var/log/syslog

Si el servicio no se reinicia correctamente u observamos algún error grave en el syslog, no nos desalentemos. Podemos intentar reparar el daño o comenzar de nuevo. Si decidimos empezar desde cero la instalación del slapd, no es necesario formatear nuestro servidor.

Para borrar todo lo que hasta ahora hemos hecho por una u otra causa, debemos des-instalar el paquete slapd, y a continuación borrar la carpeta /var/lib/ldap. También debemos dejar en su versión original al archivo /etc/ldap/ldap.conf.

Es raro que en un primer intento todo funcione correctamente. 🙂

Recuerden que en la próxima entrega veremos:

  • Autenticación local de usuarios
  • Poblar la base de datos
  • Administrar la base de datos mediante utilidades de consola
  • Resumen hasta aquí…

¡Hasta pronto, amigos!.

Repositorio local Chakra Linux (Aplicable a distros que usen pacman)

Introducción

Buenas, acá otro post, si se quiere “parecido” al que hice con anterioridad para Archlinux, esta vez vamos a hacer algo muy similar, con la diferencia, de que si bien yo lo hago bajo Chakra Linux, es aplicable a todas las distros que usen pacman como gestor de paquetes

Requisitos

  • Paquetes para compilar, suele ser los grupos terminados en devel (para Arch seria base-devel)

Armando la estructura del repositorio

Para esto es necesario crear (para ser ordenados) 2 carpetas dentro de nuestro repositorio, en mi caso voy a crear mi repo x11tete11x en: /home/x11tete11x/.repo/x11tete11x y las carpetas que contendrá serán: pkgbuilds y pkgs-x86_64

Añadiendo nuestro repositorio a Pacman

Editamos el archivo /etc/pacman.conf y añadimos nuestro repo con la siguiente información:

[NombreRepo]
SigLevel = <Nivel de seguridad>
Server = <Ruta a la carpeta donde esta la DB>

ejemplo de como tengo configurado mi repo:

[x11tete11x]
SigLevel = Optional TrustAll
Server = file:///home/x11tete11x/.repo/x11tete11x/pkgs-x86_64

Metodo Manual

Creando la DB para el repositorio

Acá hacemos uso de la instrucción repo-add para generar la base de datos del repositorio

repo-add /ruta/al/repo/carpetaDepkgs/<nombreRepo.db.tar.gz> /ruta/al/repo/carpetaDepkgs/*.pkg.tar.xz
Hay que tener ya algún paquete dentro de la carpeta de pkgs, porque sino repo-add no podrá crear la DB

Compilando paquetes

Aca mas que los pasos, me interesa dar mas “guidelines” o consejos, los pasos son:

  • Bajar o armar el PKGBUILD del paquete deseado a la carpeta de pkgbuilds, y entran en la misma
  • Adaptar el PKGBUILD para que se ajuste a los nombres de dependencias de tu distro
  • Ejecutar makepkg
  • Copiar el binario a la carpeta de pkgs
  • Regenerar la DB con repo-add
  • Refrescar los repositorios de pacman con pacman -Sy

Consideraciones al compilar

Antes de ponerse a compilar a tontas y a locas verifiquen que tengan todas las dependencias en sus repositorios oficiales, porque si empezamos a duplicar paquetes en nuestros repositorios y sistema, podemos generarle inconsistencia, por ejemplo.

Mmas adelante voy a acompañar este post, con un video tutorial mostrado todo lo que aquí se expone, en particular en Chakra esta el paquete “toluapp” y en Arch se llama “tolua++” por lo tanto si queremos compilar un paquete en Chakra (que por ej trajimos de Arch) que tiene como dependencia tolua++, NO tenemos que compilar tolua++ simplemente modificamos el PKGBUILD, para que las dependencia del mismo pase a ser toluapp.

Esa ha de ser la consideración mas grande a contemplar, después, es cuestión de ante cualquier eventualidad, googlear un poco para modificar el PKGBUILD para que compile (en el ejemplo que muestro en el vídeo, están todas estas cuestiones, incluso un error en compilación, posteriormente solucionado)

Prestar atención a las consideraciones al compilar, ya que como se expuso, así se generan buenos paquetes acordes a la distro

Método Automático

El método “automático” consiste en un sencillo script, que realicé para automatizar la tarea de compilar y agregar paquetes al repositorio (no es ni de cerca tan completo como el local-repo de Arch pero cumple con su cometido) el código del mismo es el siguiente:

#!/bin/bash

REPONAME=x11tete11x
PATHPKG=/home/x11tete11x/.repo/x11tete11x/pkgs-x86_64/

makepkg && cp *.pkg.tar.xz ${PATHPKG} && rm *.pkg.tar.xz && repo-add ${PATHPKG}/${REPONAME}.db.tar.gz ${PATHPKG}*.pkg.tar.xz

como observarán es extremadamente sencillo y para utilizarlo tienen que hacer lo siguiente:

  • Guardan ese código con el nombre que quieran (en mi caso lo llame chakra-repo)
  • Configuran las variables REPONAME, con el nombre de su repositorio, tiene que ser el mismo que ponen en el pacman.conf, y la variable PATHPKG con el directorio donde se encuentran todos los pkgs
  • Le dan permisos de ejecucion:
    chmod +x nombreDeSuScript
  • Lo copian a /usr/bin/

Para utilizarlo, luego de que bajaron o armaron su PKGBUILD, en vez de ejecutar makepkg ejecutan el script (en mi caso chakra-repo) este automáticamente compila el programa copia el binario a la carpeta de binarios, y actualiza la BD mediante repo-add, por lo que luego de ejecutar el script, solo basta hacer un pacman -Sy <paqueteRecienCompilado> para instalar el paquete en cuestión.

A continuación, les dejo un vídeo tutorial donde se ve todo esto que expuse, en acción (PD: si escuchan AC/DC la maquina compila mejor xD jajaj)