fingerprint de certificados ssh

Con el tiempo uno va coleccionando muchos certificados, algunos dedicados a un determinado proyecto, otros dedicados a algun cliente y, por supuesto los propios. En ese repositorio de certificados que suele ser la carpeta ~/.ssh/ hay que agregar los certificados que por algun motivo distribuimos en algunos servidores… en fin, llegará el día que necesitemos identificar algun certificado privado.

Así que estos son los comandos para obtener el fingerprint (huella dactilar) de certificados privados.

Certificado ssh

$ openssl rsa -in id_rsa -pubout -outform DER | openssl md5 -c
Enter pass phrase for .ssh/id_rsa:
writing RSA key
a2:d7:19:27:fa:89:43:aa:59:fd:ac:eb:71:3f:fb:a8

Como ven, mi certificado privado tiene passphrase y, para leerlo se require que la escriba.

Certificado pem (AWS)

openssl pkcs8 -in .ssh/proyectoX  -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
d3:ff:c0:cf:6f:25:a1:88:b5:c7:9e:9b:ba:b9:57:a4:bb:45:62:68

Los certificados que creamos en AWS se suelen guardar sin passphrase y el fingerprint se muestra inmediatamente.

FIX AWS cli «An error occurred (AuthFailure)»

Uno de los deployments que estoy automatizando con aws-cli funcionaba perfectamente cuando utilizaba recursos RDS, por ejemplo:

$ aws rds describe-db-snapshots --db-instance-identifier production
{
    "DBSnapshots": []
}

lo que significa que estaban correctamente configuradas las credenciales y los permisos dentro de IAM.

Pero al ejecutar comandos sobre EC2 obtenía un error, en algo tan sencillo como listar las instancias

$ aws ec2 describe-instances

An error occurred (AuthFailure) when calling the DescribeInstances operation: 
AWS was not able to validate the provided access credentials

y es un poco desconcertante, porque algunos comandos/servicios funcionan y otros no.

Una prueba que hice fue dar de alta las variables

export AWS_ACCESS_KEY_ID="AKIAIW......A"
export AWS_SECRET_ACCESS_KEY="GOvDvOPvjBW0n.........."

pero el error continúaba.

El problema es que la máquina local necesita tener una hora correctamente configurada:

$ date
Sat Sep 15 16:12:01 UTC 2018

$ sudo apt install -y ntp

$ date
Sat Sep 15 16:23:57 UTC 2018

Esos 9 minutos de retraso que tenía mi máquina local evitaba el uso de EC2.

Hay muchas formas de ajustar la hora, el servicio NTP no es la única solución y puede no ser la mejor. Tal vez un simple

$ sudo date 091516232018

hubiera sido una solución más adecuada; pero la idea es la misma, poner el host local en hora

Deepin

Ya hace tiempo que vengo utilizando Deepin como mi distribución de escritorio de Linux. Es algo que podemos cambiar, pero hace tiempo que Deepin es mi distribución preferida a la hora de montar un desktop.

Se trata de una distribución para desktop que busca ser elegante y fácil de utilizar para el usuario promedio.

No solo viene out-of-the-box con el software que uno espera (navegador Chrome, Correo Thunderbird, etc.) sino que trae algunas aplicaciones propias que buscan seguir la misma idea de sencillez y elegancia como un centro de aplicaciones (Deepin Store), Deepin ScreenShot y multimedia con Deepin Music y Deepin Movie.

Para ofimática viene ya pre-instalado todo el WPS Office que busca seguir la estética de los ciéntos de íconos y sub-menúes del MS-Office.

La base es GNU/Debian Linux, por lo que esta todo, todo lo demás que quieras instalar para personalizar tu deepin.

Hay una barra de aplciaciones preferidas donde puedes anclar tus aplicaciones más usadas y un launcher para buscar y lanzar tus aplciaciones.

El Centro de Control es un panel que se despliegua a la derecha y permite hacer tus configuraciones.

Es lindo, me gusta y lo uso y recomiendo y aquí está el enlace al sitio en español.

Tabla periódica del DevOps

La empresa XebiaLabs mantiene una tabla periódica de las herramientas para DevOps que es una forma muy interesante de tener tanto nombre y herramientas ordenados en una forma visual y comprensible.

Las herramientas listadas tiene cada una un enlace que lleva a información adicional.

Fuente: PERIODIC TABLE OF DEVOPS TOOLS

Instalar Docker con Ansible

Instalar en Ubuntu 16.04 con Ansible docker engine y docker-compose.

- hosts: all
  become: true

  tasks:
    - name: ensure repository key is installed
      apt_key:
        id: "58118E89F3A912897C070ADBF76221572C52609D"
        keyserver: "hkp://p80.pool.sks-keyservers.net:80"
        state: present

    - name: ensure docker registry is available
      # Ubuntu 16.04 LTS
      apt_repository: repo='deb https://apt.dockerproject.org/repo ubuntu-xenial main' state=present

    - name: ensure docker and dependencies are installed
      apt: name={{ item }} update_cache=yes
      with_items:
        - docker-engine
        - docker-compose

    # To enable insecure registries with Docker
    #- name: ensure docker can use insecure registries in 10.1.0.0/16
    #  lineinfile: "dest=/etc/default/docker regexp=^DOCKER_OPTS line=DOCKER_OPTS='--insecure-registry 10.1.0.0/16'"

    # Optional if you are provisioning vagrant
    #- name: add vagrant to docker group
    #  user: name=vagrant groups=docker append=yes

    - service: name=docker state=restarted

Configuración de provision con Vagrant:

  config.vm.provision "ansible_local" do |ansible|
    ansible.playbook = "playbook.yml"
    ansible.compatibility_mode = "2.0"
  end