Contexto

Estamos trabajando sobre un sitio que usa un certificado digital auto-firmado, hay muchas razones válidas por las que dicha configuración es válida. Al hacer una petición al sitio desde consola con curl, nos da un error curl: (60) SSL certificate problem: self-signed certificate in certificate chain:

Error en curl

Si bien podemos omitir el error con la opción -k Bypass error en curl

Lo cierto es que podríamos requerir que realmente usar el certificado. Es decir, reconocer a la Autoridad Certificadora auto-firmada. Entre las razones es que necesitemos usar un software de terceros al que no podemos configurar que omita el error, o porque realmente necesitamos usar el certificado en todas su funcionalidad.

Distribuciones Linux

En principio, tenemos que copiar el certificado CA a una ubicación determinada y correr el comando específicio para integrarlo:

Debian 11+

La ruta es /usr/local/share/ca-certificates y el comando es update-ca-certificates Agregando certificado CA en Debian 11+

Fedora 38+

La ruta es /usr/share/pki/ca-trust-source/anchors/ y el comando update-ca-trust

Agregando certificado CA en Fedora 38+

Dispositivos móviles emulados

Para referencia, instalé adb con DNF en Fedora 38, e instalé Android Studio desde Flatpak

Android 14-

Preparamos el certificado: Preparando el certificado La forma más sencilla es iniciar el dispositivo desde consola con la opción -writable-system. Además, al momento de crear el dispositivo, debemos usar una imagen que tenga “API” en su nombre. Ni siquiera es necesario activar el modo desarrollado en el dispositivo con estos pasos

export ANDROID_AVD_HOME=~/.var/app/com.google.AndroidStudio/config/.android/avd/
~/Android/Sdk/emulator/emulator -avd Pixel_7_Pro_API_32 -writable-system

Abrimos otra consola y ejecutamos lo siguiente:

adb root
adb disable-verity
adb reboot
adb root
adb remount
adb push ~/certs/55274267.0 /system/etc/security/cacerts/

Agregando certificado CA en Android

Fuentes