Category Archives: Linux

How old were you when you first learned to code, and what intrigued your interest in it?

I was, around 12 years old (1986 maybe). I remember my interests were cycling, reading, watching movies, thinking on going to the beach and stuff like that.

In Cuba we had no computers at home back then, but there were places named Joven Club de Computación (let’s call them “computer’s club”).

Well one day my father told me to visit a computer’s club near home because a son of one of his coworkers worked there. He though it will be a good opportunity to learn about computers, because computers will be the future and so on and so on, you know.. all the blah blah blah your parents always used to say.

Well I said “yes I will go” but I actually never went.. I was interested in cycling and roaming around the city, etc, etc.

So one day my dad asked me: have you visited the computer’s club?

ME: “No dad.. I have not”.

Dad: “Well my dear you take your bike RIGHT NOW and GO STRAIGHT TO THE COMPUTER’S CLUB AND ASK FOR LUIS AND BRING THIS PIECE OF PAPER WITH HIS NAME SIGNED BY HIM, OTHERWISE I WILL TAKE THE SH…. OUT OF YOU!!!” he yelled.

My God, I got really scared and went to …. that place….I was really upset… I asked for Luis, he showed up : “oh you are Ernesto, come on.. you know what: Im busy right now but read this book and try to apply what the book says by using this computer”. He showed me how to start the computer and left to the upper floor.

It was an MSX “intelligent keyboard” (https://en.wikipedia.org/wiki/MSX) and the book was about an introduction to programming in MSX Basic… and I sat there for I don’t remember how many hours; actually learning how to start a program in MSX Basic, the first “hello world”, how to run my program, what a variable was… conditionals, loops, and so on… I don’t know: I sat there like 8 hours, until Luis showed up again and asked me if I wanted to save my program, and taught me to save to a cassette in a tape recorder. (oh, and he signed the paper Dad asked me to bring back.. or I didn’t ask him for? I don’t recall now).

Anyway: I was totally amazed!! I could order to computer to do things… I could cycle, or print strings depending on a conditional statement, and so on and so on. Solve math of physics ecuations, code and print my biorhytm (remember that?), well it took me some time to do it but I ended up doing whatever i wanted with the computers.

Oh…. after a couple of week it was dad who was going to the Club to pick me up and to force me to go home to “eat something”

I went to the club as soon as it openned at 8 or 9am, and left only when they kicked me out of it at 10pm or when dad went to force me out of the club. I was even given the keys to stay during lunch break of the Club’s workers.

That was how I started… a brief summary of how I started in fact.

¿Qué extrañas de Microsoft Windows después de cambiar a Linux?

No tengo de que hablar con mis amigos: todos hablan de virus antivirus troyanos y uno parece antisocial ahí oyendo y sin poder hablar nada.

Tener que apretar control c y control v continuamente. Es tan lindo! Y Linux es tan vulgar. Con solo marcar ya copio y pego con el botón del medio. Claro que tiene esa compatibilidad que permite usar el anticuado ctrl c. Y Ctrl v

Trabajo 8 horas diarias. La cabrona maquina no se reinicia repentinamente ni deja de responder sin previo aviso y por tanto tengo que trabajar sin parar. Eso es capitalismo puro y duro. Hasta piedras en los riñones me salieron por olvidarme de ir al baño

No ando por sitios raros para bajar cracks de programas y contaminar mi máquina para correr algún programa sin pagar por su licencia.

No tengo el placer de reinstalar el equipo cada algunos meses , claro , poniendo cara de profesional preocupado y absorto en la instalación. Y luego no puedo andar por ahí quejándome de lo agotador de mi labor: he estado tooodo el día instalando Windows.

Ahora la parte sería: No se… llevo unos 15 años sin usarle en lo absoluto y no le extraño.

¿Cuáles son algunas historias locas de “rm -rf” de las que has oído hablar?

oído? Vivido!

Te cuento dos que me acuerdo, no, mejor 3., es que seguramente me acordaré de muchas más.

Soy usuario de Linux desde 1995, y conocía de unix desde un año antes, y le uso desde entonces.

Historia 1: “Esta babosada no funciona”. (no es “babosada” pero realmente no puedo poner la palabra aqui por respeto). Es un usuario muy amigo mío que al día de hoy pasa como un experto en temas de seguridad y demás. Pero en aquellos remotos tiempos, 2003–2004 era un novato en Linux. Le habíamos instalado un sistema X para su organización y él un día nos llama y nos dice que ese sistema no sirve, que no levanta, que le vayamos a arreglar esa babosada inmediatamente porque estaba toda su organización sin el servicio.

Llegamos y efectivamente estaba nuestro servidor totalmente sin funcionar y todos mirándonos con cara de sorna, mofándose de nosotros. Pedía que le dijéramos en qué runlevel le queríamos arrancar. Qué raro! Le puse 3 y nada, emitió miles de mensajes. Al entrar en modo de rescate notamos que faltaba TOTALMENTE el directorio /etc, no existía /etc pero para NADA!

Inmediatamente hice lo que se debía hacer. Mirar .bash_history del usuario /root/ y decía algo así:

1001 cd /

1002 cd tmp

1003 cp -R /etc .

1004 ls etc/

1005 cd ..

1006 rm -rf etc

me viré para el técnico, mi amigo, y estaba como congelado, frío, seco, tieso, quieto, asustado, pálido, sin pestañear. Le pregunté: y esto? Me dijo: “yo quería borrar el directorio etc que estaba dentro de tmp”. “Sí, pero borraste el de la raíz.” — le contesté. “Es que me llamaron cuando puse cd .. (el 1005) y se me olvidó lo había puesto y borré etc de la raíz”.

Bueno, esta gracia les costó caro.

Sugerencia: mientras eres novato trabaja siempre con rutas absolutas. Al borrar mejor hubiera puesto rm -rf /tmp/etc y con CERTEZA se refería al etc que había copiado dentro de /tmp/

Sugerencia: posicionarse en la raíz (/) es como hacer el amor sin preservativo. Es agradable, se siente rico, es hasta cómodo. Pero es un tanto peligroso. JAMÁS te posiciones en /). El comando 1005 y el 1001, nada más de pensarlos me tiemblan las manos, nunca nunca nunca nunca JAMÁS te pongas en la raíz, porque suceden cosas… raras.

A mis estudiantes cuando les veo cambiándose a la / me da un ataquito, con pataleta y todo…

Historia 2: “La institución importante”. Era el 24 de diciembre de noséquéaño, todos listos para irnos fuera de la ciudad, el carro lleno de cosas, los niños subidos al carro (se imaginan lograr vestir, hacer pipi y caca a 2 niños de unos 2 y 4 años?). El carro encendido y … riiiing… “Ernesto, como sea, te pagamos lo que sea pero ayúdanos urgentemente: Una máquina virtual no arranca y eso es por culpa del servidor de virtualización que nos dijiste que pusiéramos”

Cada vez que alguien ya culpa a “algo” o a “alguien”… yo me pongo sospechoso. Es como cuando uno llega al médico y le dice: Estoy tosiendo mucho, tengo tuberculosis. Por favor! No te diagnostiques, solamente dime lo que pasa y yo intento averiguarlo.

En fin, me tocó bajar a los niños (gritería incluída de los 3, la madre y ellos) y sentarme a ver por qué no arrancaba la máquina, abrir el disco duro de la máquina virtual… qué raro, los directorios de / estaban ahí! … cuando veo en .bash_history (ohhhh gran amigo .bash_history) me doy cuenta de esto:

rm -f //

Qué Diablos es esto? Era algo así como borra lo que hay dentro de los directorios que están en la raíz. Pero no los directorios. Es por eso que yo seguía viendo /bin, /sbin, /etc, todo todo todo. Pero cuando miro, dentro de /bin no había ningún archivo, dentro de /sbin/ no había ningún archivo y así… todo limpio, vacío pero los directorios sí existían.

Nada, reportarles lo que hicieron y solicitarles recuperaran todo de respaldos. Y bonito hachazo.. feliz navidad y próspero año nuevo con lo cobrado!

Historia 3: Copiar de la web y pegar en el shell. Esto sí es duuuuro. Es un amigo que recién comenzaba en Linux pero quedó de responsable de todo un negocio, un día me llama y me dice que estaba copiando una receta (un paso a paso) de un sitio web y le desapareció TODO de un servidor. Cuando entro al sitio web del que copiaba noté algo, no me pregunten por qué, pero algunos sitios te ponen espacios cuando se formatea de forma especial algún texto. Ejemplo le decían( por favor no probar en sus servidores ni equipos de escritorio):

cp -r / etc .

rm -rf / etc / passwd

toch / etc / passwd

No sé por qué pero los caminos los separaba.. el más peligroso era el segundo.. querían decirte que borraras /etc/passwd pero al poner el formato un espacio entre cada /… realmente la órden era que borrara 4 directorios o archivos: /, etc, / y passwd… y claro, suficiente con /… se llevó en limpio todo el sistema.

Bonus (similar a rm -rf):

Historia 4: userdel -r. “Ingeniero”, me llaman, “quise borrar por seguridad el usuario nobody y me desapareció el sistema. Puse userdel -r nobody y se borró todo!!”

Efectivamente userdel -r borra el usuario y el directorio $HOME definido dentro de /etc/passwd y el usuario nobody tiene como $HOME a…….. / !!! A la raíz… se lo voló en claro.. qué duro tenerle que decir al usuario que ya nada, no había mucho más por hacer. (realmente no recuerdo si era nobody u otro, pero el tema es que el $HOME era /)

Tengo otras historias, pero bueno, espero las hayan disfrutado.

Is 123456 the most common password that is hacked?

yes, it is.

Two days ago we made the same analysis. If you download the password list from have i been pwned, Have I Been Pwned: Pwned Passwords, ordered by prevalence you get a list of disclosed passwords sorted by prevalence : “how many times that password had been seen in the source data breaches”

Here is the first 5 more common passwords SHA1 hashed:

7C4A8D09CA3762AF61E59520943DC26494F8941B:23174662

F7C3BC1D808E04732ADF679965CCC34CA7AE3441:7671364

B1B3773A05C0ED0176787A4F1574FF0075F7521E:3810555

5BAA61E4C9B93F3F0682250B6CF8331B7EE68FD8:3645804

3D4F2BF07DC1BE38B20CD6E46949A1071F9D0E3D:3093220

The first column is the password hashed (more about this later)
Second column is how many times that password has shown up in disclosed password leaks
As you may see the most popular password has been seen 23 174 662, 23.1 million times.

The one in the second place is quite far from the first one: 7 671 364, 7.6 million times. 1/3 of the first place

Regarding hashing, it is called a one way encryption I can encrypt a string of characters to a given hash. But given the hash you can not find the original string.

For example:

if I find the SHA1 sum for string abcdefg I will get:

2fb5e13419fc89246865e7a324f476ec624e8740

But given this sha1 sum you can not simply decrypt it to the original string.

However anytime you find out the sha1sum for abcdefg you will always get 2fb5e13419fc89246865e7a324f476ec624e8740

This is very popular way to store passwords (as well as for some other unrelated things): If the user types in the same password, then the same hash will be obtained and of course it will match the hash I have stored.

Lets find out the SHA1 hash for the string 123456 (Im using a linux shell but you may obtain any sha1 hash here)

$ echo -n “123456”|sha1sum

7c4a8d09ca3762af61e59520943dc26494f8941b –

hum… if you look closely, it will match the first row in the hash list above. So yes, it looks like the 123456 is the most popular one.

Assignment:

Which is the second one? You have to start guessing.. . try several common one passwords, eg: admin, root, qwerty, password (yes!! people uses password as a password), also try them cased, eg: Password, QWERTY, etc

I already discovered them … Good luck!

Configuring an ATLAS RIPE probe V3 using a different gateway

Well, today I plugged in the atlas ripe probe I was given in LACNIC 25. However I want it to use a different gateway, as I have 2 ISP and I do not want it to use the default route.

Of course this small tuto will work for anybody wanting to specify a different default route (gateway) to a PC by using dnsmasq

I have my DHCP server running on a dd-wrt (using dnsmasq) and after some simple tweaking I found the way:

Go to: Services -> Additional DNSMasq Options

Inside that textbox type in something like:

dhcp-option=net:red,option:router,192.168.1.254
dhcp-host=F4:F2:DD:CC:BB:AA,192.168.1.20,1440m,net:red

of course, take good care of your default route (gateway) address (option:router) in my case the new gateway is 192.168.1.254 and I specified it like this. And also notice we require the probe MAC address, in this example is: F4:F2:DD:CC:BB:AA but type in yours (you can check for your MAC at the bottom of your probe). Specify an IP address from your network (in my example it is 192.168.1.20) and that’s it.

programación

Ya comenté en un post de hace casi 5 años cómo comencé en la programación.

Luego de lo ahi contado, seguí poniéndole ganas a la programación y aprendí poco a poco algunos lenguajes. En el colegio (vocacional) nos enseñaban precisamente MSX Basic que era lo que yo sabía y pasé literalmente fácil esos años. Incluso participé en el grupo de concurso, que eran algunos estudiantes que sacaban de sus aulas para entrenarles intensivamente en un tema específico. De computación éramos 4, habían de biología, de matemáticas, física, química y electrónica.

Un año antes de acabar la vocacional publicaron la lista de carreras a las que se podía optar y yo veo una que dice: informática. Mi profesor de computación me aclaró que eso era algo llamado “informática y bibliotecología”… no, eso no quería, era de organizar bibliotecas y eso. Pero resulta que otro amigo un año superior me aclaró que era una carrera dedicada a lo que nos gustaba: “programar” tenía otras cosas aburridas, pero era eso.

Así que le apunté y de las 5 plazas que se asignaron ese año a mi provincia yo accedí a una.

En la universidad efectivamente aprendimos muchos lenguajes de programación. Yo ahora no los recuerdo todos pero intentaré hacer una corta lista:

  • Pascal (estructurado y orientado a objetos)
  • C (estructurado y a la brava para sistemas operativos)
  • Prolog
  • LISP (lo estudié en la maestría)
  • Siman
  • Ensamblador (en modo real)
  • Visual Basic
  • Delphi (esto era voluntario)
  • Foxpro y Visual FoxPro
  • dBase y foxbase (lo aprendí en mis prácticas)

A todo esto yo ya sabía MSX Basic y GW Basic del colegio.

Incluso teníamos un semestre de “intérpretes y compiladores” donde aprendimos cómo se realizaban intérpretes, generadores de código y compiladores.

Ninguna asignatura era suave o autocomplaciente, realmente había que aprender, por uno, o con la ayuda del profesor.

Recién graduado trabajé en una empresa canadiense donde el lenguaje escogido era Progress4GL, un lenguaje super lindo y extremadamente performante para trabajar. Y lo usé durante más de dos años que trabajamos para ellos.

Estoy seguro habían algunos más, si alguien de la época me ayuda, le agradezco. Además de esto fue fuerte el manejo de algoritmos, y técnicas de programación, fue fuerte fuerte.. era interesante, pero era super demandante.

A lo largo de los años, a medida que me ha ido interesando un lenguaje, lo he ido aprendiendo. Tengo mis preferencias, al que le guste y al que no. A mi no me gusta tanto la programación orientada a objetos, si la tengo que utilizar o leer, lo hago, pero no me gusta. A mí no me gustan mucho los lenguajes puros de programación de BD, no me gusta la programación visual, comprendo que es muy útil y he aprendido a usar algunos lenguajes visuales, pero no es mi mundo.  Algunos lenguajes los he olvidado, por ejemplo que no me pregunten nada de SIMAN. Otros los utilizo directa o indirectamente cuando me ha hecho falta.

Sí, porque una de las ventajas de programar es que no soy un simple administrador de red, servidores, ruteadores. Sino que cuando me hace falta puedo leer un código e interpretarlo, o sacar conclusiones o encontrar problemas en sistemas. Porque conozco sólidamente los fundamentos de la programación, bases de datos. A la final un lenguaje u otro, y (relativamente) una base de datos u otra, se basan en las mismas teorías, fundamento, reglas, técnicas.

Ya luego de la universidad me orienté lentamente hacia las redes de comunicación y Linux, por lo que la tasa de aprendizaje de nuevos lenguajes fue bajando.

  • PERL
  • Gambas (simil del VB pero abierto)
  • Bash scripting

Con bash he pasado muuuucho tiempo, es un lenguaje interpretado simple, sencillo para realizar tareas de los administradores de servidores y redes. Y realmente me gusta mucho.

Si hay un lenguaje que utilizo super super frecuentemente es la programación en bash scripting.

Y hace un tiempo andaba así con un tiempo libre y me puse a aprender un lenguaje que siempre me ha intrigado: python. Y realmente aprendí en menos de 48 horas sus rudimentos, claro que la práctica ayuda mucho, no es sólo aprenderlo, sino comenzar a utilizarlo y practicarlo. Realmente facilita muchas tareas, es un lenguaje mucho más avanzado que bash, es un lenguaje digamos que requiere del mismo esfuerzo que php, perl o pascal. Uno tiene que ir comprendiendo cómo se hace lo que uno desea en este lenguaje. O cuáles trucos facilitan tu vida, etc. Pero realmente es emocionante.

 

Cómo configurar tunnel de IPv6 con tunnelbroker

Quieres navegar por IPv6? Puedes probar usar las IPs que te da tunnelbroker

Edita un nuevo archivo, llamado por ejemplo:

/etc/sysconfig/network-scripts/ifcfg-sit1

Dentro le pones esto:

DEVICE=sit1
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6TUNNELIPV4=<IPv4delServerDeTunnelBroker>
IPV6TUNNELIPV4LOCAL=<IPv4LocalTuya>
IPV6ADDR=<IPv6QueTeAsignaron>
IPV6_DEFAULTGW=<IPv6DelServidor>

IPv6DelServidor=Server IPv6 Address (no pongas el /64)

IPv6QueTeAsignaron=Client IPv6 Address (ponle con /64 y todo)

IPv4LocalTuya=Client IPv4 Address. Ponle tu IP privada si es que el equipo lo tienes detrás de un NAT

IPv4DelServerDeTunnelBroker=Server IPv4 Address

Reinicias la red, o el equipo, y listo, puedes hacer ping6 www.google.com o lo que quieras

 

Notas para instalar KVM en CentOS-7

Estas notas son para mi, que las entiendo, sin embargo posiblemente te sirvan también si necesitaras instalar KVM en CentOS-7.

  • Reviso en el BIOS que tenga activada la opción de virtualización: A veces está oculta/a veces no está. Si estuviera y estuviera desactivada, el sistema correrá en modo emulación (lento) y dirá solamente QEMU y no QEMU/KVM
  • En mi caso me falló el arranque con EFI, desde el BIOS desactivé el EFI para que arrancara la flash. Esto puede no aplicar a todo el mundo.
  • Bajé el CentOS-7 liveCD
    • Configuré teclado
    • Configuré la red
    • Particioné el disco (/boot – 500M, / para el resto del disco). (Puedes particionarle para usar LVM, ahora no es el caso en este rapido tuto)
    • Al inicial la primera vez le dije que no al kdump
    • Deshabilité el SELINUX en /etc/sysconfig/selinux
    • apagué el firewall: systemctl disable firewalld , systemctl stop firewalld
    • Actualicé el sistema (yum update)
    • Instalé los siguientes paquetes y arranqué los siguientes servicios:
      • yum install virt-manager
      • yum groupinstall “Virtualization host”
      • systemctl start libvirtd
      • systemctl enable libvirtd
    • Creé un bridge en el virt-manager, este bridge tiene a la tarjeta de red de mi servidor como componente de él, pero no le “activé ahora” al bridge pues te quedas sin conectividad.

      Sólo le puse onboot y ya. Fíjate en lo marcado en amarillo en la imagen:

      Selección_085

      • Reinicié para que el bridge funcione.
    • De ahora en adelante toda máquina virtual la debo crear conectándose al bridge br0 para que esté en la misma conexión de la red.
    • Al crear las máquinas debo veificar que tanto el disco como la tarjeta de red sean de tipo “virtio” si no lo son, podrá ser potencialmente menos rápido el trabajo el sistema.

Nota lo que he marcado en amarillo (lo del writeback es solamente si tienes un raid por hardware con respaldo por bateria):

Selección_086

Selección_087

nauta.cu no navega bien, por qué rebotan los mensajes

Actualización 20141001: Indiqué del problema a ETECSA y este fue corregido minutos después.

Adelantándome un poquito en el tiempo quiero indicar que este problema está ocurriendo en Setiembre del 2014, no quiere decir que este será un problema a futuro, quizá lo corrijan. Si usted tiene un problema con nauta.cu, mejor contácteles a ellos.

Rebotes de correos dirigidos a nauta.cu

El día de hoy un amigo me comentó que continuamente los correos que enviaba a su familia en Cuba le rebotaban, que a veces no rebotaban, pero otras veces sí. Leí un mensaje rebotado y decía algo relacionado con los DNS: que no podía resolver el dominio en los DNS.

Inicialmente pensé que podría ser una falla en el servicio por inundación de peticiones (DoS) sin embargo ahora en la noche me pongo a analizar los dns definidos por nauta. Son aparentemente 5:

ns1.etecsa.net, ns2.etecsa.net, ns3.etecsa.net, ns4.etecsa.net y ns5.etecsa.net

El sitio http://www.squish.net/dnscheck/ realiza un chequeo transversal de DNS, verificando la misma pregunta (query) que se le indique en todos los DNS definidos para un dominio (en este caso sería de ns1 a ns5.etecsa.net).

Procedí  a usarle para verificar los records MX definidos para el dominio nauta.cu notando que de 2 de estos 5 DNS fallan directamente indicando que no hay records MX. Es decir, 2/5, un 40% de las peticiones que se realizan a los DNS de nauta.cu para averiguar su record MX falla indicándose que tal record no existe.

DNS de nauta.cu fallando
DNS de nauta.cu fallando

Por lo tanto cualquier servidor de correos que tenga la mala suerte de preguntarle a estos DNS que fallan (ns2 y ns4 al momento) recibirá mensajes indicando que no hay MX, que no hay servidor de correos, y los correos posiblemente reboten sin llegar a su destinatario.

nauta.cu has no MX record!

Por qué ocurre esto?

Los DNS normalmente trabajan en un modelo que se llama de maestro-esclavo (o primario-secundario) mediante el cual uno de los DNS es el maestro, donde se realizan las adiciones/modificaciones/eliminaciones de records de una zona. Los DNS esclavos son el resto y los esclavos simplemente se ocupan de incorporar las modificaciones que existan en el maestro sean incorporadas a ellos. De esta forma se garantiza que un cambio en el maestro se vea reflejado en todos los esclavos.

Si ETECSA tuviera sus 5 DNS en formato 1 maestro->4 esclavos esto no sucedería pues al modificarse el maestro, los esclavos tuvieran la misma información. De esta forma las respuestas de todos los DNS fueran las mismas (bien o mal, pero las mismas).

Por qué entonces en nauta.cu 3 DNS sí entregan el record MX de la zona y en los otros 2 DNS no? Porque no están completamente configurados en modo maestro-esclavo. Entonces el administrador de los DNS debe realizar los cambios no en un sólo DNS (el maestro) sino en varios o todos; y lógicamente puede olvidarse de modificar uno o varios de los DNS como aparenta ser el caso.

Cómo se soluciona? En principio al menos el administrador de los dns debe agregar el record MX a todos los DNS, en la forma que estén utilizando, sea multiples master o maestro-esclavo o lo que sea. Y luego por facilidad debería cambiar los dns a un formato maestro-esclavo para que no vuelva a suceder esto.

Además los 5 dns de nauta.cu (ns1 a ns5.etecsa.net) tienen punto de falla en común. Qué es esto? Significa que los DNS en cuestión están localizados en la misma red. Esto es fácil de ver en la siguiente imagen:

Punto de falla en comun en dns de etecsa
Punto de falla en comun en dns de etecsa

Como podemos observar de ns1 a ns4 están evidentemente en la misma red y en el AS27725. Y ns5 está aparentemente en una red diferente, pero en el mismo AS (AS27725). Una falla en algún ruteador, sobrecarga, inundación de paquetes, pérdida de paquetes, etc, que ocurra en un equipo clave de la etecsa conllevaría a que todos los DNS dejen de responder y los correos reboten. Si al menos tuvieran un DNS fuera de su red, esto evitaría el punto de falla en común por lo que siempre alguien respondería a las peticiones que se hagan a sus dominios.

Hay más temitas, pero que los arregle el responsable de esa zona.

hiawatha: Generando certificado SSL hacia archivo .pem

En el sitio de hiawatha está bien documentado en este url. Pero quiero explicarlo para mi, a mi forma, como me funciona.

A propósito, hiawatha soporta SNI, que significa Server Name Indication, el cual permite que se generen varios certificados SSL utilizando una sola IP. Ya las cosas no son como antes que por cada certificado SSL se requería una dirección IP. También otros servidores web soportan SNI, no es algo único de hiawatha, pero es que con hiawatha es tan facilito.

Para generar un certificado SSL en hiawatha, la clave privada, el certificado obtenido del proveedor así como el bundle (grupo de certificados de ayuda que el proveedor entrega) deben ir en un mismo archivo que conocen como .pem.

Cómo generar este archivo .pem? Es fácil.

Obteniendo el certificado de una entidad certificadora

Lo primero que hacemos es generar la clave privada y la solicitud de certificado para enviar a la autoridad certificadora:

openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr

La clave privada se llamará server.key y la solicitud de certificado se llamará server.csr. Envío este server.csr a la autoridad certificadora, leugo de cumplir los trámites, esta entidad certificadora emitirá un certificado el cual me llegará en un mail. Este certificado llega en un .zip con varios archivos, el certificado tendrá un nombre algo así como www_misitio_com.crt, yo le renombraré, por comodidad para mi como server.crt.

En resumen, tengo el siguiente listado:

AddTrustExternalCARoot.crt,

EssentialSSLCA_2.crt,

server.key,

server.crt,

ComodoUTNSGCCA.crt,

UTNAddTrustSGCCA.crt

Una vez que ya tengo el certificado (server.crt) puedo borrar la solicitud de certificado (server.csr) ya que solo se utiliza para obtener el certificado, por eso no le pongo aquí.

server.crt es el certificado

server.key es la clave privada

El resto de archivos son lo que algunos conocen como bundle, que digamos que son archivos que ayudan a los clientes a tener o dar la certeza de que el certificado fue emitido por una entidad certificadora.

Creando el archivo .pem:

El archivo .pem se crea concatenando los anteriores archivos, y tiene un orden, que es el siguiente:

1- server.key

2- server.crt

3- el resto del bundle (yo le probé poner en diferente orden los archivos del bundle y funcionó bien en cualquier caso).

El comando mediante el cual concatené todos los archivos es el siguiente:

cat server.key server.crt UTNAddTrustSGCCA.crt ComodoUTNSGCCA.crt EssentialSSLCA_2.crt \
AddTrustExternalCARoot.crt > /etc/hiawatha/server.pem

chmod 400 /etc/hiawatha/server.pem

Como se puede ver, es sencillo, concateno todo con cat hacia un archivo dentro de /etc/hiawatha/ y le cambio los permisos para 400 a este archivo.

Finalizando:

Aunque esto ya no tiene que ver con el hecho de generar el archivo .pem lo publico pues me hace falta:

Una vez haya realizado esto, simplemente en el sitio virtual dentro de /etc/hiawatha/hiawatha.conf declaro que su certificado ssl es el archivo server.pem:

SSLcertFile = server.pem

Puede verse más información sobre cómo activar el SSL en hiawatha puede verse en su sitio web.