Requisitos:

  • Tener instalado OpenSSL 1.0
  • Tener instalado la JDK 1.8

Creación de una Autoridad Certificadora:

  1. Genera clave privada de la CA
    openssl genrsa -des3 -out private/ca-private.key 2048
  2. Generar una petición de certificado para la propia CA
    openssl req -new -key private/ca-private.key -out ca.csr -subj "/C=ES/ST=Asturias/L=Siero/O=RuBeNsA/OU=Departamento Seguridad/CN=rubensa.eu.org"
  3. Generar el certificado de la CA firmado por la propia CA
    openssl x509 -signkey private/ca-private.key -req -days 3650 -in ca.csr -out public/ca.crt

Creación de un certificado de servidor:

  1. Crear un almacén de claves con la clave privada del servidor
    keytool -genkeypair -keystore private/server.p12 -storetype PKCS12 -alias server -keyalg RSA -keysize 2048 -dname "CN=rubensa.eu.org,OU=Departamento Seguridad,O=RuBeNsA,L=Siero,S=Asturias,C=ES" -ext san=dns:rubensa.eu.org,dns:localhost,ip:127.0.0.1
  2. Generar una petición de certificado
    keytool -certreq -alias server -keystore private/server.p12 -storetype PKCS12 -file server.csr
  3. Generar un certificado firmado por la CA (si existe previamente el fichero “serial.txt” eliminar -CAcreateserial)
    openssl x509 -req -days 365 -in server.csr -CA public/ca.crt -CAkey private/ca-private.key -CAcreateserial -CAserial serial.txt -out public/server.crt
  4. Importar el certificado de la CA en el almacén de claves del servidor
    keytool -import -alias CA -file public/ca.crt -keystore private/server.p12 -storetype PKCS12
  5. Importar el certificado firmado del servidor en el almacén de claves
    keytool -import -alias server -file public/server.crt -keystore private/server.p12 -storetype PKCS12
  6. Exportar la clave privada del servidor
    openssl pkcs12 -in private/server.p12 -nodes -nocerts -out private/server-private.key
  7. Exportar la clave pública del servidor
    openssl rsa -in private/server-private.key -pubout > public/server-public.key

Creación de un certificado de cliente (con estructura de DNI electrónico):

  1. Generar la clave privada del cliente
    openssl genrsa -des3 -out private/client-private.key 2048
  2. Crear un fichero “dnie.cnf” con el siguiente contenido

    [ req ]
    distinguished_name = req_distinguished_name

    [ req_distinguished_name ]
    countryName = Pais (2 letras)
    countryName_default = ES
    countryName_min = 2
    countryName_max = 2

    commonName = Apellido1 Apellido2, Nombre (AUTENTICACIÓN|FIRMA)
    commonName_max = 64

    givenName = Nombre

    surname = Apellido1

    serialNumber = NNNNNNNNA (número de DNI con letra)
    serialNumber_min = 9
    serialNumber_max = 9

  3. Generar una petición de certificado
    openssl req -config dnie.cnf -new -key private/client-private.key -out client.csr
  4. Generar un certificado firmado por la CA (si no existe previamente el fichero “serial.txt” añadir -CAcreateserial)
    openssl x509 -req -days 365 -in client.csr -CA public/ca.crt -CAkey private/ca-private.key -CAserial serial.txt -out public/client.crt
  5. Generar un fichero pkcs12 para importar el certificado en el navegador
    openssl pkcs12 -export -clcerts -in public/client.crt -inkey private/client-private.key -out private/client.p12 -name "client"

Creación de un truststore (un almacén de claves en el que ir guardar los certificados en los que el servidor “confía”):

  1. Crear un keystore
  2. Importar el certificado del CA (de tal modo que cualquier certificado de cliente firmado por la CA sea válido)
    keytool -importcert -alias CA -file public/ca.crt -keystore private/truststore.p12 -storetype PKCS12 -keyalg RSA -keysize 2048

Nota: Para poder consultar los certificados existentes en un keystore podemos utilizar el siguiente comando
keytool -v -list -keystore private/server.p12 -storetype PKCS12

Algunos enlaces de interés
Receta para la creación de certificados de prueba desde cero
Steps to generate self-signed PKCS#12 SSL certificate and export its keys

Anuncios

eclipse_logo
A raíz de la última actualización de Ubuntu (pasando de 17.04 GNOME a 17.10) he tenido problemas (“Unhandled event loop exception” al intentar cambiar de perspectiva utilizando la botonera) al ejecutar alguna versión de Eclipse (concretamente la 4.6.3, con la 4.7.l no he tenido problemas).

El problema parece estar relacionado con libwebkit y GTK3.

Para solucionarlo (forzando el uso de GTK2) he tenido que modificar el eclipse.ini para incluir:

--launcher.GTK_version
2

de tal modo que ahora queda algo así:

-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.401.v20161122-1740
--launcher.GTK_version
2
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-configuration
/home/rubensa/development/eclipse/4.6.3/configuration
-data
/home/rubensa/development/eclipse/4.6.3/workspace
-vm
/home/rubensa/software/jdk1.8/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=/home/rubensa/development/eclipse/4.6.3/dropins

Atlassian_Confluence_Logo.svgCon la página en modo edición:

  1. Escribe ‘!’ y selecciona el SVG adjunto (que has adjuntado previamente)
  2. Haciéndolo así, se renderiza inline
  3. Adjusta el tamaño de la imagen según tus necesidades

vía

kyocera

Según cómo esté configurada una impresora Kyocera, puede ser necesario proporcionar un ID de usuario para la contabilización de trabajos enviados (sin el cual, la impresora no dejará imprimir).

Para establecer dicho parámetro en Linux, podemos instalar los drivers propietarios del fabricante o bien realizar una pequeña modificación en el PPD usado genéricamente en CUPS.

Para hacer esto último editamos el fichero correspondiente a nuestra impresora que se encuentra en /etc/cups/ppd y buscamos la línea:

*KmManagment MG00000000/00000000: "(00000000) statusdict /setmanagementnumber get exec"

Intertamos justo antes de esta línea una nueva con nuestro ID, por ejemplo, 1234:

*KmManagment MG1234/1234: "(1234) statusdict /setmanagementnumber get exec"

Y establecemos dicha cuenta como la cuenta por defecto, modificando el valor de:

*DefaultKmManagment: MG00000000

por:

*DefaultKmManagment: MG1234

Maven

Si tienes un proyecto maven multi-módulo y quieres construir solamente uno de los submódulos, puedes utilizar las opciones avanzadas del reactor, más concretamente:

  • -pl, –projects
    Construye solamente los proyectos del reactor especificados en vez de construir todos
  • -am, –also-make
    Si se especifica una lista de proyectos, también se construyen los proyectos requeridos por la lista

Así, si nos situamos en el el directorio P del proyecto padre y ejecutamos:

mvn install -pl B -am

esto construirá B y los módulos requeridos por B.

via

adb-installation
NOTA: Para poder realizar estas acciones tu dispositivo debe estar rooteado.

Si olvidaste habilitar el modo desarrollador y el adb no está ejecutándose, realiza lo siguiente:

  • Reinicia tu dispositivo en modo recovery
  • Conéctalo al PC utilizando el cable USB
  • Abre un terminal
  • Si ejecutas adb devices deberías ver el dispositivo en la lista. Si es así, ejecuta:adb shell mount /system
    abd shellecho "persist.service.adb.enable=1" >> default.prop
    echo "persist.service.debuggable=1" >> default.prop
    echo "persist.sys.usb.config=mtp,adb" >> default.prop
    echo "persist.service.adb.enable=1" >> /system/build.prop
    echo "persist.service.debuggable=1" >> /system/build.prop
    echo "persist.sys.usb.config=mtp,adb" >> /system/build.prop

    Ahora, si reinicias tu teléfono android te dirá “oh, tu adb se está ejecutando pero, por favor, pulsa este botón Aceptar para que confiemos en tu PC“. Como no queremos siquiera que nos pregunte, haremos lo siguiente (asumiendo que ya hemos salido del modo shell de adb, sino, antes escribe exit):

    cd ~/.android
    adb push adbkey.pub /data/misc/adb/adb_keys

  • Listo! Ahora simplemente reinicia el teléfono y deberías ser capaz de tener acceso adb

vía

Terminal

Supongamos que queremos cambiar el UID (USER ID) y el GID (GROUP ID) para todos los ficheros y directorios de un usuario.  El procedimiento es muy sencillo:

  1. Primero, asigna un nuevo UID al usuario usando el comando usermod.
  2. Segundo, asigna un nuevo GID al grupo usando el comando groupmod.
  3. Finalmente, utiliza los comandos chown y chgrp para cambiar los antiguos UID y GID respectivamente.  Puedes automatizar este proceso con la ayuda del comando find.

Por seguridad, es importante hacer una copia de seguridad de tu sistema antes de hacer esto.

Supongamos que tenemos:

  1. Nombre de usuario: foo
  2. Viejo UID de foo: 1005
  3. Nuevo UID de foo: 2005
  4. Nombre de grupo de usuario: foo
  5. Viejo GID de foo: 2000
  6. Nuevo GID de foo: 3000

Comandos:

Para asignar un nuevo UID al usuario llamado foo, escribe:
# usermod -u 2005 foo

Para asignar un nuevo GID al grupo llamado foo, escribe:
# groupmod -g 3000 foo

Tan pronto como como escribes los anteriores comandos, todos los fichero ubicados en el directorio home del usuario tendrán el UID cambiado automáticamente.  Sin embargo, los ficheros que se encuentran fuera del directorio home del usuario tendrán que ser cambiados manualmente.  Para cambiar manualmente fichero con los viejos GID y UID respectivamente, escribe:
# find / -group 2000 -exec chgrp -h foo {} \;
# find / -user 1005 -exec chown -h foo {} \;

El comando -exec ejecuta el comando chgrp o chmod en cada fichero.  La opción -h pasada al comando chgrp/chmod afecta a cada enlace simbólico en vez de a cualquier fichero referenciado.

vía

A %d blogueros les gusta esto: