Convert letsencrypt .pem certificate to .pfx

I use Let’s Encrypt certificates in my Windows and Linux serves. This week I had to use the same certificate in two machines, one IIS server (Windows) and one Apache2 server (Linux Debian).

I create the certificate in Linux using certbot utility, ant it gave me four files:

  • cert.pem
  • chain.pem
  • fullchain.pem
  • privkey.pem

I installed to Apache with no problems.

But then I tried to install the certificate to IIS 6.1 and I realized that Windows did not want that type of file. With some research on the Internet I found a solution, using the command openssl (in Linux):

openssl pkcs12 -export -out certificateforwindows.pfx -inkey privkey.pem -in cert.pem -certfile fullchain.pem

I wish this helps someone

Yi Home Camera 2 1080p + Xiaomi Power Bank 2c 20.000mAh


Sometimes I need a camera in some places where there is no easy power supply, so I have to run with a battery. I usually use a UPS, like the one we use for ower computers, but this machine converts from a 12v battery to 220v output, and then, the Yi Home Camera transformer convert from 220v to 5v.

So I thought using a power bank (those which we use to recharge our mobile in a emergency) to avoid even the  transformer. I bought the bigger I found, Xiaomi Power Bank 2C 20.000mAh.


Theoretical calculations

The power supply of the Yi Camera is 5v 2.0A. In the Yi Home Camera 2 is noted 4.0W(MAX).
If the camera consumes 4 watts for 24h it involve 96Wh
The battery is rated at 20.000 mAh and 5v, that is 100Wh.

With these data, and assuming that the camera is always at max consumption, (4W) it should last: 100/96 = 25h, a bit more than a day. That assuming:


  1. The battery could be fully discharged. False, Li-polymer battery can be discharged 80% as much
  2. The camera consumes 4W all the time. False, I have tested the camera with a consumption-meter for a full week and it consumes 2.4W in average.

So now the calculations are:  (80%100Wh)/(2.5w24h) = 80/60 = 32h

Let’s check.

In Practice

Now my test. I full charged the power bank, set it to low current output mode (according to power bank user guide this funcion is for small devices, fitness bands, watches, bluetooth headsets and other small gadgets), and place the camera in my cottage. I set it up recording continiously (not only when motion is detected) at 1080p @25fps (max quality) and disabled all other stuff like gesture recognition o baby crying recognition. The camera was with no WiFi connection (perhaps it was searching for WiFi all the time and that is a battery consuming operation). It started recording August 19, 2018 at 20:56h, and the last slice of recording was at August 21, 2018 at 06:37h.

So, my Yi Home Camera 2 connected to a Xiaomi Power Bank 2C as power supply continuosly recording last 33 hours and 41 minutes.

Wow!!! Only a 4,3% of  deviation between theory and reality.

Next tests:

  • With WiFi connection linked, not always searching.
  • With motion detection only recording. I suposse it will increase autonomy because of not writing continiously to the sd card. On the other hand motion detector is a CPU consuming operation…

Anyway if you got here, perhaps you have to have a look to Blink cameras and this Blink cameras with AA batteries but be aware of region lock before purchasing one.

How to use Yi Home Camera 2 (1080p) outside of China, revisited

Firstly, this post is about Yi Home Camera 2. Currently Xiaoyi has various similar models. In each one of its models they make a Chinese version and an international version (same version but more expensive). Xiaoyi is making big efforts to block using Chinese models outside of China, forcing you to buy a international version.

I wrote an article some time ago to get this camera working, but after that Xiaomi enhanced its blocking procedure and this article is not valid any more.

Now Xiaomi has introduced a new change, checking if your camera is connecting to their servers from a Chinese IP address or not.

Description of the problem

Yi Home Camera 2 is paired with Yi app with no problem, the camera works and save video on the SD card, even notify you when there is some event, but you can NOT get live video. When you open Yi app it stucks at Establishing secure channel… 50% for a while and finally it shows the error message Network connection failed, please check network settings and reconnect it (-20009). So neither you  can watch your camera on live or browse through your records from the Yi app. However you can get out the SD card and review your videos in a PC.

The solution

In brief the solution is using a Chinese proxy, so Xiaomi will think your camera is in China. Easy, isn’t it?

Fortunately there is a project (yi-hack-v2) where someone (niclet) has made a custom firmware to get telnet and FTP working for this camera and, the most important for us, with an option to setup a proxy. So all the credits go for him/her.

The procedure to get your camera working again is:

  1. Download the files of niclet project and copy the contents of sd folder to the root of your SD card. The card has to be FAT32 (vfat) formated.
  2. Edit the file yi-hack-v2.cfg (in test folder) and uncomment the last line (remove the starting ‘#’), and set one Chinese server (I use this list)
  3. Put your SD card. All is done. Now you can pair it with your Yi Chinise phone app an get Live video with no problems

Note 1: The text editor to edit file yi-hack-v2.cfg is important. Its a linux file, someway different to a Windows one. I firstly used notepad and the hack doesn’t work. I then used Notepad++ and it worked perfectly. Mind this if you are having any trouble.

Note 2: If you have some trouble formatting you SD card with Windows, you could use HP USB Disk Storage Format Tool

Note 3: You have to download the files of niclet project (yi-hack-2) from github, but if you have any problems they are here too.

Note 4: I’ve got better results pairing the camera without the SD card, and then inserting it (after pairing success).

Currently my last line of yi-hack-v2.cfg is:


and with this proxy the camera is working for three months.



Dominios Windows .local y problemas con Apple

Desde hace algún tiempo estoy problema con los dominios Windows de algunas empresas, dominios Active Directory, y los productos de Apple, especialmente con iPhone y iPad (aunque po lo que veo hay gente que también tiene problema con los Mac).

El problema surgió porque los productos de Apple no recibian email (mediante ActiveSync del servidor Exchange que tenemos en la empresa) cuando estaban conectados al WiFi de la empresa, pero sin embargo sí que recibian email cuando estaban fuera de la empresa.

El problema es que cuando están dentro de la empresa son incapaces de resolver el nombre del dominio, pues es un dominio interno del tipo midominio.local, mientras que cuando están fuera de la empresa utilizan Tras mucho estrujarme la cabeza doy con la información de que ahora (a saber desde cuándo, pues antes funcionaban perfectamente) Apple utiliza el sufijo .local para Bonjour (lo trata como host Rendezvous), por lo que al ver que es un dominio .local no resuelve mediante DNS, sino que resuelve mediante Bonjour, o lo que es lo mismo, no resuelve.

Hay muy poca información al respecto en internet sobre este tema, así que aquí dejo un par de links.

El artículo técnico de Apple. Ofrece solución para los Mac, pero no para los iPhone/iPad.
Uno de los problemas en los foros de Microsoft.
Otro problema en spiceworks.

¿Y que hay de las soluciones? ¿cambiar el sufijo de tu dominio Windows por algo del tipo midominio.loc? Venga, es muy divertido cambiar el nombre de un dominio!

Aquí las mejores prácticas que recomienda Microsoft para elegir un nombre de dominio Windows.

Probablemente por esto Microsoft ha dejado de recomendar utilizar .local para sus dominios Active Directory y ahora recomienda usar un subdominio del dominio público.

How to use Yi Home Camera 2 (1080p) outside of China

UPDATE (11/11/2017): This process is not valid anymore, but you can use a new one. All info here.

I’ve been using a Yi Homme Camera for a long (aka Xiaomi/Xiaoyi Small Ants Camera). It’s a magnific camera with good quality (720p) and night vision at a stunning price. In my opinion, then only flaw is the lack of an wired Ethernet port. However, Xiaomi, firmware update after firmware update has made it a bit worse. First they blocked telnet access, RTSP and HTTP. And finally the blocked their Chinese hardware to be used only in China Mainland (from Nov 2015). Yes, they sell two versions, Chinese and International. Luckily you always can solve this limitations running some scripts or downgrading the firmware. There is a lot of info on the Internet.


Recently Xiaomi (Yi) launched a major upgrade for this product. They presented Yi Home Camera 2, with even better quality, 1080p @25fps 1.5Mbits, gesture detection and more. Obviusly I immediately bought one. However I got the same issue all people is having. It’s impossible to get it working. You can not pair it with the phone app. The camera gets the QR code, connect to your WIFI network (light steady blue light) but the pairing proccess never ends succesfully. You get “time out” both the camera (voice message) and the phone. Every people has the same problem. Some of them have tried to update the firmware, but this is even worse. Now they get a voice message “This camera can only be used in China”.

After some weeks of research I finally get mine working, using a specific firmware.

To install it you have to:

    1. Download this firmware (version 2.1.1-20160429113900) and put it in the root of your SDCARD (it has to be FAT32 formated). The name of the file has to be home.bin, otherwise camera won’t install it
    2. Turn on the camera
    3. Reset the camera to default values pressing the reset white button in the back
    4. Turn the camera off
    5. Insert the SD card with home.bin and turn it on

You will see the green led blinking for about one minute. After that you will be able to pair your camera with the app. Bear in mind that the app has to be Chinese version too.

And, of course, remember NOT to update your camera firmware even if the phone app invite you.

Next step: Enable telnet to allow RTSP and FTP.

Date and Time in Xiaomi Xiaoyi Smart Camera

Sometimes you find out a small gem like this beautifull piece of hardware. Xiaoyi Smart Camera is almost the perfect home camera. It has a beutiful design, good video quality, bidirectional sound, good construction, SD card slot, WIFI, a decent mobile app, and a bargain price. However it has some drawbacks:

  • Latest firmwares have removed telet, FTP and RTSP access. WHY?
  • Time Zone is stuck to China, so your recordings are miss-dated, what does moving through recordings by the mobile application a nightmare.
  • Lack of wired networking.

I can accept the lack of wired networking but not the other two. The first was present in early firmwares. The Time Zone setting would be really easy to add. There are some alternatives on the Internet to fix the Time Zone issue but while helping they don`t solve the problem.

Solution 1

Disable ntpdate (from here):

I telnetted into the camera (username: root / password: 1234qwer)

cd /homemv ntpdate ntpdate.orig
touch ntpdate
chmod 755 ntpdate
date -s “2015-06-02 22:00″

The commands above disable to program that tries to set the date from the internet, and then you can set the date manually to the current date/time. Hope this helps.

Of course, to be able to apply this solution you have to flash one firmware with telnet support.

Solution 2

Firmware mod (from here)

If you are living in a different time zone (GMT+6 is Germany, Denmake, Austria, Italy…) you have to download the file “” open and modify the row. The line “my_version =” should contain possible the latest version of the firmware.


  • While the timestamp on the video is fixed, the orange marks in mobile app timeline not, so moving through it doesn’t work very well.

Solution 3

Changing time zone in etc (from here)

You can change the timezone.
Change the TZ file in /etc/
the command is :
echo “$my_gmt” > /etc/TZ
change $my_gmt by your timezone.
Note : GMT 0 => Beijing
for Paris = GMT+6
Have fun.


My solution

Work in progrress: I’ve create a bash scritp which changes the time of the mp4 files created by the camera to a previous date, 6 hours before. The script is executed every minute through cron.


Update: The best solution

Finally, the best solution it’s here and it does suppot moving through recordings perfectly.

Sincronización del reloj con la hora de Internet

Uno de los servidores de una empresa está teniendo problemas
con el reloj de Windows (Windows Server 2012). El reloj se atrasa de
forma aleatoria, llegando a marcar incluso un día menos de la fecha
actual. Siendo el servidor un controlador de dominio (relaciones de
confianza y sincronización de la hora con los equipos del dominio),
centralita teléfonica (no se puede llamar a determinadas horas) y
gestionar la facturación (fechas de facturas erróneas) esto se convierte
en un gran problema. Lo primero por supuesto fue pensar que la pila del CMOS se había gastado, y simplemente con sustituir la sería suficiente, pero no es así, pues la hora se retrasa sin ni siquiera tener que apagar o
reiniciar el equipo, sino mientras Windows está en funcionamiento,
cuando la pila no entra en juego.

Teniendo en cuenta que la placa basae de ese mismo servidor ya ha
dado algún problema de hardware, cabe suponer que debe ser algo de lo
mismo. Así, y en vista de que el cliente no quiere sustituir el
servidor, la solución a adoptar es conseguir que el relog se sincronice
con la hora de internet para evitar ese retraso. Como sabemos Windows ya
ofrece esa posibilidad, como una opción más del reloj, pero la
sincroniza cuando el quiere, lo que provoca que el reloj siga



Así pues había que buscar otra solución.

La orden de línea de comandos W32tm.exe /resync fuerza la
sincronización del reloj con la hora de internet (, o el
servidor NTP que esté configurado), dejando la fecha y la hora

Así, la solución fue crear una tarea programada que ejecutase esta
orden cada 15 minutos, para asegurarnos de que el reloj estuviese
siempre sincronizado. La tarea viene a ser esta:


Quizás la primera línea podría omitirse, pero está para asegurarnos
de que el servicio de sincronización de la hora está ejecutándose, no
vaya a ser que esté dormido.

Escogiendo un sistema de video vigilancia

Últimamente estoy evaluando la posibilidad de montarme un sistema de videovigilancia para mi cabaña de la sierra, más aún desde que me robaron el generador.

He instalado varios sistemas de videovigilancia de diferentes marcas, pero ahora que es para mí, las necesidades son otras, y me surge la duda.

Lo que está claro es que necesitaré que las cámaras tenga visión nocturna y necesitaré un servidor que controle las cámaras, almacene las grabaciones y me permita acceder a ellas en remoto, lo que se suele llamar un NVR o DVR.

El Hardware (cámaras)

Probablemente me decante por las cámaras UniFi de Ubiquiti, pero también me gustaría poder reciclar alguna cámara IP vieja que tengo sin uso o incluso alguna vieja webcam USB. La otra opción sería comprar alguna cámara china barata, por ejemplo la Xiaoyi Small Ants Smart Camera, que tiene unan relación calidad/precio impresionante (720p con visión noctura por 30€). Estas son las que tiene actualmente Ubiquiti:


De aquí me interesan principalmente las tipo bullet, pero la UVC-PRO se me va de presupuesto (+400€) así que tendré que ir a por la UVC (~110€) y quizas una UVC-Micro o Dome para el interior de la cabaña. Aún así todavía tengo que comprobar el alcance de los infrarrojos para visión nocturna, pues la idea es ponerlas en la esquina de la parcela (aunque también puedo programar el servidor para que encienda un foco cuando la cámara detecte movimiento, y ya de paso que suene una alarma).

El Hardware (NVR)

Mucho ha llovido desde que me monte mi sistema de seguridad casero instalándole linux (OpenWrt) a un router, conectándole una cámara IP y un par de webcams USB, e instalándole Motion para gestionarlas. Ahora busco algo más profesional.

Si no lo pensase mucho me iría a lo fácil, lo que suelo recomendar a mis clientes, Ubiquiti UniFi Video, debido a su impresionante relación calidad/precio.

Sin embargo el problema del NVR de UniFi es que sólo soporta cámaras de la misma cámara, y si luego quiero integrar alguna cámara que tenga por ahí, pues me dará rabia no poder hacerlo. Además, en vistas a tener que poner un servidor, me gustaría que integrase más cosas, no sólo el vídeo. Por ejemplo, que integrase algún software para el control de riego por goteo, que decida cuándo hay que regar, abra y cierre electroválvulas de riego, quién sabe… que abra un servo para alimentar a el perro… Es decir, no tener un servidor para el vídeo y otro para “otras cosas”.

Lo bueno del software NVR Unifi Video es que es descargable, y se puede instalar en cualquier servidor, por lo que no te ata a tener que comprar su hardware NVR, este:


Al fin y al cabo no es más que un servidor linux con un Intel D2550, 4GB de RAM y un disco de 500GB. La duda es, ¿podría usar ese mismo aparato como servidor para más cosas? Es decir, añadirle mi propio software para controlar el riego u otras cosas. Al fin y al cabo el NVR de Ubiquiti en realidad monta un Debian 7.0 x64. O por otro lado ¿sería mejor utilizar una Raspberry Pi e instalar en ella el software de UniFi Video y así tener un servidor para lo que yo quiera? Bueno, el software de UniFi necesita un procesador de 64 bits, por lo que no creo que sirva la Raspberry Pi.

Quizás la Raspberry, ya sea la 1 o la 2, se quedan un poco cortas para ejecutar el software de UniFi, pues en sus requisitos establece al menos 2GB de RAM, pero hay otras alternativas a la Raspberry.

En resumen:

Procesador Memoria Precio Otros
UniFi NVR Intel Atom D2550 (1M Cache, 1.86 GHz) 4GB 380€ Incluye disco de 500GB65 W, 19V, 3.42A
Raspberrry Pi B+ BCM2835ARM1176 Processor 700MHz 512MB 30€ 0.5-1W40 GPIO pinsNo SATA

USB Disk o microSD

Raspberrry Pi 2 B BCM2836 900MHz quad-core ARM Cortex-A7 CPU 1GB 40€ 40 GPIO pinsNo SATAUSB Disk o microSD

El Software

En caso de no usar el software de UniFi me decantaría por Zoneminder,
con el que podría controlar cámaras de cualquier marca (como la Xiaoyi
Ant por RTSP), que tiene una pinta estupenda (salvo por la interfaz
gráfica) y encima es OpenSource. Eso sí, el UniFi dispone de app para
Android e iOS que es muy cómodo. Zoneminder no, aunque siempre puedes
acceder desde un navegador web.

Xiaomi miniWifi drivers

Xiaomi mini WiFi

Ayer compré un pincho WIFI USB en powerplanetonline, concretamente un Xiaomi miniWifi, y cuál es mi sorpresa al ver que Windows 7 no instala por sí solo los drivers.
Pues nada, a conectar un cable y a la página del fabricante a
descargarlos, pero… sorpresa! está todo en chino y no hay ni siquiera
versión en inglés. Tras investigar un poco y con la ayuda del traductor
de Google finalmente consigo encontrar los drivers en el primer icono de windows no (ese es para el router) el de más abajo.

miniwifi download


En cualquier caso eso descarga un ejecutable que no sólo instala los drivers,
sino que también instala una aplicación de Xiaomi (todo en chino) que
sirve para crear un Access Point, y para subir archivos a una nube de
Xiaomi de la que te regalan 1TB. Como digo todo en chino, difícil de
usar, incluso difícil de cambiar del modo master (Access Point) al modo


Así pues aquí os dejo un archivo rar con tan sólo los drivers, sin la
aplición, para poder usar el Xiaomi miniWifi como un pincho WIFI normal
y corriente, sin más preocupaciones. En el rar vienen drivers para
varios sistemas operativos

Drivers para estos sistemas operativos

Podéis descargar el paquete con sólo los drivers para el Xiaomi miniWifi aquí [8MB]


Aislar subred con iptables (excepto la puerta de enlace)

De todos es conocido la facilidad con la que hoy en día se
pueden romper las claves de muchas redes WIFI, ya sean WEP (todas) o WPA
(algunas). El caso es que ayer me encontré con un amigo que, como mucha
gente, se alimenta del internet del vecino. Es un entendido de la
informática sin llegar a ser informático. Le sacó la clave del wifi al
vecino y se ha puesto en su casa un router para que:

  • Conecte con la red del vecino
  • Cree su propia wifi independiente

Llamamos a mi a mi amigo… Jose Andrés, por ejemplo. El esquema sería algo así:


El tema es que Jose Andrés me comentaba la posibilidad de ser
descubierto por el vecino, aunque este no tuviese conocimientos
informáticos. ¿Cómo? El tema es que hoy hay varias tecnologías diseñadas
para facilitarnos la vida que podrían ir en nuestra contra. Por
ejemplo, DLNA y uPNP, así como los ya tradicionales NetBIOS o SAMBA.
Estas tecnologías podrían advertir al vecino de nuestra presencia
incluso sin que él lo solicitase.

Supongamos que el vecino está tranquilamente sentando frente a su
portátil leyendo el periódico. Entonces decide poner música, abre el
Reproductor de Windows Media y este le informa de que ha encontrado un
nuevo dispositvo con librería de reproducción llamado Samsung SmartTV
XXXX. El vecino se pregunta ¿qué es eso? Yo no tengo ninguna tele
Samsung. Simplemente el Reproductor de Windows Media ha encontrado la
tele de Jose Andrés, que es compatible con DLNA e informa de ello.
Situaciones como esta pueden pasar también con una Playstation o con un
móvil. Mucho más fácil es si simplemente el vecino está en el ordenador y
pincha en Mis sitios de red, le saldrá un listado de los ordenadores
que forman la red y lo que comparte cada uno, gracias a NetBIOS,
tecnología de la edad media en la que se basa Windows para buscar
equipos en la red (aunque también los puede encontrar por DNS).

¿Cómo puedo evitar esto? – pregunta Jose Andrés

La solución que él emplea es intentar configurar todos los
dispositivos de su casa desactivando estas funcionalidades (DLNA, uPnP,
SAMBA…) pero es un follón y normalmente siempre se te olvida algo.
Además, ve limitadas sus posibilidades. ¿Y si quiere reproducir un vídeo
de su móvil en su tele mediante DLNA? No podría por tener OFF estas

¿Cuál es la solución buena? Montar un firewall. Susto.

No es para tanto. El router de Jose Andrés probablemente tenga un
firewall integrado que se puede configurar de una forma u otra. Tan sólo
hay que decirle al firewall que bloquee todos los paquetes desde su red a la red del vecino, salvo que los paquetes tengan como destino la puerta de enlace (la conexión a internet).

Cada router administra su firewall como quiere, pero existen routers
que lo que llevan en su interior es linux, y podemos acceder a la línea
de comandos de linux a través de telnet o de ssh. Es más, algunos
routers se pueden flashear con un nuevo firmware (DD-WRT, OpenWRT,
Tomato…) para que funcionen con linux.

El caso es que el router de Jose Andrés soporta linux así que es muy fácil. En linux el firewall se configura con el comando iptables. Tenemos que añadir tan sólo dos reglas a la tabla FILTER en la cadena FORWARD (encargada de enrutar paquetes).

  1. Si el paquete va a la puerta de enlace: Permitirlo
  2. Si el paquete va a la red del vecino: Bloquearlo

Así de fácil. En iptables las reglas se ejecutan en orden, de
forma que si un paquete encuentra una regla coincidente pasa por ella y
no por las siguientes. Así cuando un paquete tenga como destino la
puerta de enlace del vecino ( encontrará la regla 1 y no
llegará a evaluar la regla 2. Sin embargo, un paquete destinado por
ejemplo al ordenador portátil del vecino ( no encontrará
conincidencia con la regla 1, así que pasará a evaluar la regla 2, con
la que conincide y por tanto será desechado.

¿Como añadimos estas dos reglas con iptables?

Con estos dos comandos:

  • iptables -I FORWARD -s -d -j DROP
  • iptables -I FORWARD -s -d -j ACCEPT

El parámetro -I indica que inserte la regla al principio de la cadena
FORWARD, que es la encargada de enrutar paquetes (en la tabla FILTER,
que es la tabla por defecto). El parámetro -s indica el origen del
paquete (source) y el parámetro -d el destino (destination). El
parámetro -j indica qué hacer con el paquete, DROP sería bloquearlo y
ACCEPT sería permitirlo. Tener en cuenta que al usar -I las reglas se
insertan al principio de la cadena, por lo que la última en insertarse
quedará la primera en la cadena. También podríamos haber usado el
parámetro -A que inserta al final de la cadena de reglas, pero no
sabemos qué reglas se aplicarían antes que las nuestras. Fácil ¿verdad?

Con esto Jose Andrés ya está protegido de la detección de su vecino, su red está aislada de la red de su vecino.

Nota: Recordar que estos dos comandos de iptables deben
ejecutarse cada vez que se inicie el router, por lo que tendremos que
ponerlos en un script de inicio. Cada router permite esto de un modo u
otro, por ejemplo en DD-WRT sería:

En el botón SAVE FIREWALL.


Autor: Tomás Crespo García