Entidad Certificadora con PFSense

En una anterior entrega les mostraba como crear nuestro propio certificado auto firmado para ser usado localmente en nuestro dominio. Pero leyendo los comentarios me di cuenta de que muchos se enredaban con la consola, sobre todo en la parte de generar el certificado intermedio. Entonces leí el comentario de kurosaki1976 donde me sugería el uso de PFSense para la creación de los certificados de una forma más sencilla y entendible. Por lo que me comprometí a estudiarlo y mostrarle cómo hacerlo de esta forma tan sencilla. Como extra también les mostrare como propagarlos vía GPO y como hacer que el navegador Mozilla Firefox los reconozca del almacén de certificados de Windows.

Comenzamos abriendo nuestra web de PFSense, una vez ahí damos clic en System/Cert. Manager. En la pestaña de CA (certificado raiz) vemos que estará vacía, le damos al botón de agregar(ADD) para crear nuestro certificado raíz (ROOT)

Como ya expliqué en el otro tutorial la clave privada de la CA raíz se usa solo una vez para firmar el certificado de la CA intermedia y luego se almacena en su lugar seguro. Es necesario guardar bien este certificado porque es la base para todo lo que haremos y es el usado para firmar los posteriores certificados, si la pierde o se compromete deberá generar uno nuevo.

Nombre Descriptivo: Nombre que le designaremos al certificado raiz. En mi caso para reconocerla fácilmente puse CA_mi dominio

Método: Crear una CA para uso interno

Tiempo de vida (lifetime): Por defecto viene para 3650 días que serían 10 años. Para uso interno esto es muy cómodo ya que no tendrá que pensar en generar otra en mucho tiempo a menos que se vea comprometida su seguridad. Usted puede elegir la cantidad de días a poner, lo seguro es dejarlo por un año (365 días)

Nombre común (CN): Por comodidad use el mismo nombre del certificado asi me será más fácil de reconocer.

Las demás opciones dejarlas por defecto a menos que deseen cambiar algo a su gusto.

Los siguientes campos de componentes de asunto de la CA son opcionales (Código de país, Estado , Organización y Unidad) y pueden dejarse en blanco. Yo opte por llenarlos para que se visualice quien emitió el certificado.

Muchas aplicaciones webs requieren del uso de un certificado intermedio para no exponer su certificado raíz. Para mayor seguridad también generaremos el certificado intermedio que se firmara con nuestras recién creada CA.

En esa misma pestaña que nos encontramos hacemos clic en agregar(ADD) pero esta vez para crear un certificado intermedio

Nombre Descriptivo: Nombre que le designaremos al certificado intermedio. En mi caso para reconocerla fácilmente puse CA_mi dominio_INTER

Metodo: Crear una CA Intermedia para uso interno

Certificado de Autoridad firmante: Este certificado se firmara usando al certificado raiz (CA) como firmante.

Tiempo de vida (lifetime): Por defecto viene para 3650 días que serían 10 años. Aquí ponemos la misma cantidad o mayor de tiempo que le asignamos a la CA raíz.

Nombre común (CN): Por comodidad use el mismo nombre del certificado así me será más fácil de reconocer.

Las demás opciones dejarlas por defecto a menos que deseen cambiar algo a su gusto.

Los siguientes campos de componentes de asunto de la CA son opcionales (Código de país, Estado , Organización y Unidad) y pueden dejarse en blanco. Se lleno con los mismos datos de la CA raíz ya que al final es una misma entidad certificadora.

Como se aprecia en la figura están ya creados los certificados raíz (auto firmado) e intermedio (firmado por el raíz). Ahora solo nos queda crear el certificado que usaremos para nuestras webs.

Nos pasamos a la pestaña Certificados y damos clic en el botón agregar(ADD)

Nombre Descriptivo: Nombre que le designaremos al certificado interno. En mi caso para reconocerla fácilmente puse SSL_mi dominio

Método: Crear un certificado para uso interno

Certificado de Autoridad firmante: Este certificado se firmara usando al certificado intermedio (anteriormente creado) como firmante.

Tiempo de vida (lifetime): Por defecto viene para 3650 días que serían 10 años. Pondremos el mismo que asignamos en el certificado intermedio.

Nombre común (CN): Aqui es donde viene el TIPS más importante , pues usaremos este certificado para TODO, por lo que usaremos el comodin(wildcard) asterisco para abarcar todas las webs. Quedando nuestro CN como *.mi dominio

En los atributos del certificado elegir como tipo certificado para server (server certificate). Enseguida nos advertirá que el tiempo de vida del certificado es muy grande ya que desde el 1 de septiembre del 2020 se limitó ese parámetro. Pero como lo usaremos interno para nuestra empresa, ignoraremos esa advertencia.

NOTA: Existirán aplicaciones webs más seguras y actuales que no aceptaran esto, por lo que más adelante les mostrare como proceder.

Las demás opciones dejarlas por defecto a menos que deseen cambiar algo a su gusto.

Como se aprecia en la figura el certificado está firmado por nuestra CA intermedia, es un certificado para servidores y su CN engloba todo nuestro dominio. También se puede apreciar el certificado auto firmado que está usando PFSense actualmente el cual sustituiremos por este nuevo que hemos creado.

Ahora procederemos a salvar todos los certificados que creamos en un lugar seguro.

Al hacer clic en los iconos que se aprecian en la figura salvamos tanto el certificado como su respectiva llave(key). Haremos esta misma operación también con el certificado que creamos SSL_Mi dominio.

Copiamos estos certificados a nuestro controlador de dominio para desde ahí distribuirlos a todos los equipos del dominio usando una GPO.

En nuestro servidor controlador de dominio corremos el siguiente comando gpmc.msc el cual nos abrirá la consola de manejo de políticas de grupo. En Group Policy Objects creamos una GPO nueva la cual llame GPO_CA_SSL_ESCFG

En Filtrado de Seguridad (Securtity Filtering) agregamos las computadoras de nuestro dominio a las cuales les aplicaremos la GPO.

Pasamos a la pestaña detalles (Details) y en GPO status desplegamos y seleccionamos que desactive la opción de configuración de usuarios, para solo aplicar la GPO a las PC’s.

Procedemos a editar nuestra GPO

Se nos abrirá una nueva ventana de Editor de Políticas de Grupo, seleccionamos el siguiente camino:

Computer configuration/Policies/Windows Settings/Security Settings/Public Key Policies/

En dicha carpeta nos interesa solo 2 opciones:

  • Trusted Root Certification Authorities
  • Intermediate Certification Authorities

Clic derecho sobre Trusted Root Certification Authorities y le damos importar para traer nuestro certificado CA.

Seguimos el asistente y seleccionamos nuestra CA raíz que previamente habíamos copiado al servidor de dominio.

Repetimos el mismo proceso pero esta vez importando nuestro certificado intermedio a Intermediate Certification Authorities.

Una vez creada la GPO procederemos a enlazarla a una Unidad Organizativa (OU) de nuestro controlador de dominio, en este caso la que agrupa a todas las computadoras del dominio. Clic derecho sobre la OU y elegir enlazar a una GPO existente

En nuestro servidor de dominio abrimos un CMD o Powershell y forzamos a distribuir la GPO a nuestro dominio con el siguiente comando:

gpupdate /force

Vamos a comprobar el efecto de nuestra GPO en las PC’s del dominio. En una PC unida al dominio nuestro, usamos el mismo comando de arriba para forzar la actualización de políticas de la red. Ejecutamos el siguiente comando en el PC certlm.msc para acceder al almacén de certificados local del equipo. Una vez ahí buscamos si los certificados que propago la GPO que creamos están ya dentro.

Como se aprecia en al figura el certificado intermedio CA_ESCFG_INTER creado ya se encuentra en el almacén de certificados de equipo local en su correspondiente lugar (entidades de certificación intermedias). Lo mismo se puede comprobar en entidades de certificación de confianza donde debe estar nuestro CA raiz. Ahora nuestro Windows es capaz de usarlo en el servicio que lo requiera. Vamos a comprobarlo con la misma web de PFSense. Para ello vamos a decirle a la web que use nuestro certificado generado.

En la web de PFSense nos vamos al menú System/Advanced/Admin Access y seleccionamos el protocolo HTTPS y el certificado creado para todo nuestro dominio SSL_ESCFG y salvamos.

Si abrimos la web de PFSense con cualquier navegador que use el almacén de certificados de Windows veremos que ya nuestra web estará segura y aceptara el certificado creado.

¿Pero que pasa con nuestro querido navegador Mozilla Firefox porque no funciona el certificado con él? Firefox usa su propio almacén de certificados y no el de Windows por lo tanto esto constituye un problema a la hora de querer abrir web certificadas por nosotros. Porque tendríamos que ir equipo por equipo distribuyendo el certificado a cada navegador Firefox. Por suerte el navegador Firefox es altamente configurable y tiene una solución a esto. Usar mediante una directiva de configuración el almacén de certificados de Windows. Para ello abriremos una nueva pestaña y escribiremos en la barra de navegación el siguiente comando about:config el cual nos abrirá una configuración oculta del navegador con la advertencia de que la modificación de cualquier parámetro sin previo conocimiento podría provocar mal funcionamiento del mismo. Ponemos la palabra enterprise en su buscador y vamos a la opción security.enterprise_roots.enabled la cual la fijamos a TRUE

Ahora nuestro navegador Firefox comenzara a reconocer nuestros certificados.

Ahora muchos me dirán, pero estamos en las mismas porque entonces hay que ir navegador por navegador activando esa opción!. Mi respuesta es, no se preocupen porque ahora les mostrare como distribuir mediante una GPO la configuración de Firefox.

Retornamos a nuestro controlador de dominio y crearemos una carpeta con el nombre GPO y dentro crearemos 2 ficheros:

  • autoconfig.js
  • mozilla.cfg

El contenido de autoconfig.js sera el siguiente:

pref("general.config.filename", "mozilla.cfg");
pref("general.config.obscure_value", 0);

Ahí se aprecia que mandamos a cargar al Firefox un fichero de configuración .cfg con las configuraciones que necesitamos.

El contenido de mozilla.cfg es el siguiente:

//
lockPref("browser.startup.page", 1);
lockPref("browser.startup.homepage", "https://mail.escfg.tur.cu");
lockPref("network.proxy.http", "proxy.escfg.tur.cu");
lockPref("network.proxy.http_port",3128);
lockPref("network.proxy.ssl", "proxy.escfg.tur.cu");
lockPref("network.proxy.ssl_port",3128);
lockPref("network.proxy.socks", "proxy.escfg.tur.cu");
lockPref("network.proxy.socks_port",3128);
lockPref("network.proxy.type", 1);
lockPref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, .tur.cu, 10.122.193.0/24, .firefox.com, .mozilla.com, .mozilla.net, .mozilla.org");
lockPref("network.proxy.share_proxy_settings", true);
lockPref("security.enterprise_roots.enabled", true);
lockPref("browser.download.useDownloadDir", false);
//quitar updates
lockPref("app.update.enabled", false);
lockPref("app.update.autoUpdateEnabled", false);
lockPref("app.update.auto", false);
lockPref("app.update.mode", 0);
lockPref("app.update.service.enabled", false);
lockPref("extensions.update.enabled", false);
lockPref("extensions.update.autoUpdateEnabled", false);
lockPref("toolkit.telemetry.archive.enabled", false);
lockPref("toolkit.telemetry.enabled", false);
lockPref("toolkit.telemetry.rejected", true);
lockPref("toolkit.telemetry.server", " ");
lockPref("toolkit.telemetry.unified", false);
lockPref("toolkit.telemetry.unifiedIsOptIn", false);
lockPref("toolkit.telemetry.prompted", 2);
lockPref("toolkit.telemetry.archive.enabled", false);
lockPref("signon.autofillForms", false);
lockPref("datareporting.healthreport.service.enabled", false);
lockPref("datareporting.policy.dataSubmissionEnabled", false);
lockPref("toolkit.crashreporter.enabled", false);
lockPref("plugins.hide_infobar_for_outdated_plugin", true);
lockPref("browser.rights.3.shown", true);
lockPref("browser.startup.homepage_override.mstone","ignore");
lockPref("pdfjs.disabled", true);
lockPref("shumway.disabled", true);
lockPref("plugins.notifyMissingFlash", false);
lockPref("browser.urlbar.suggest.searches", false);

La siguiente configuración es una sugerencia mía de una recopilación de configuraciones que yo estimo que ayudan a mejorar el desempeño del navegador. Si ustedes conocen o dominan el tema siéntanse libres de agregar o quitar configuraciones.

NOTA: Los parámetros de página web por defecto y proxy son los de mi red, deberán editar y usar los correspondientes a su infraestructura

Como podemos apreciar ya la configuración de uso del almacén de certificados de Windows está incluida con la linea lockPref(«security.enterprise_roots.enabled», true). Ahora solo nos queda propagar estos ficheros mediante una GPO.

La carpeta GPO creada con los 2 ficheros dentro debemos compartirla para que todas las PC del dominio tengan acceso a ella y su contenido.

Procedemos a crear en Group Policy Objects una GPO nueva la cual llame GPO_FF. Aplicamos el mismo procedimiento anterior para la creación de la GPO de certificados. Limitamos la distribución a solo equipos del dominio y enlazamos la GPO a la OU de computadoras. Editamos la GPO pero esta vez nos centraremos en:

Computer Configuration/Preferences/Windows Settings/Files

Le damos a crear un nuevo fichero y configuramos para autoconfig.js

Accion: Reemplazar (para asegurarnos que si hay otro fichero antiguo sea reemplazado por este)

Archivo fuente: Camino global de nuestro archivo compartido en la red. Nótese que es un camino de red, NO local.

Destino: %programfiles%\Mozilla Firefox\Defaults\Pref\autoconfig.js

Repetimos el proceso para el otro archivo (mozilla.cfg)

Accion: Reemplazar (para asegurarnos que si hay otro fichero antiguo sea reemplazado por este)

Archivo fuente: Camino global de nuestro archivo compartido en la red. Nótese que es un camino de red, NO local.

Destino: %programfiles%\Mozilla Firefox\mozilla.cfg

Procedemos a actualizar las políticas tanto en el servidor como en una pc del dominio para ver el resultado de nuestro despliegue

Si abrimos la ubicación de la instalación de nuestro Firefox podemos observar que ya nuestros ficheros se desplegaron.

Al abrir ahora nuestro navegador Firefox ya tendremos activas todas las configuraciones configuradas en los ficheros que distribuimos entre ellas activar el uso del almacén de certificados de Windows.

¿Qué pasaría si un servicio o web no acepta nuestro certificado por estar con un tiempo de vida de 10 años? Pues bueno no entraremos en pánico ya que siempre que generemos una CA raíz a partir de esta podemos crear y firmar los certificados que queramos. ¿Qué hacemos en este caso? Pues muy fácil creamos a partir del CA raíz otro certificado intermedio y otro certificado para ese servicio. Solo que esta vez para cumplir con lo estándar le daremos de vida solamente 1 año. ¿Recuerdan la advertencia que nos da PFSense cuando usamos el certificado para server? Mediante estas sendas fotos entenderán.

Certificado intermedio firmado por nuestro certificado raíz con duración de 1 año

Certificado específico para servicios que requieran duración de 1año , firmado con el certificado intermedio de la misma duración.

NOTA: Deberán hacer todo el proceso de editar la GPO de distribución de certificados y agregar ambos nuevos certificados en sus respectivos contenedores de raíz e intermedio.

Bueno hasta aquí este extenso pero productivo tutorial, que en un futuro alargare más con 2 ejemplos de webs que usan certificados intermedios y solo por 1 año

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 20

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes IDEAR Cienfuegos

1 comentario


  1. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 93.0 Firefox 93.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0

    Saludos, Chamaco.

    Te vi grande ahí. Me gustó la parte de la GPO y el Firefox. Ese archivo que pusiste ahí tiene más cosas que el mío, voy a analizarlo.

    Por otra parte, prefiero hacer la CA por otra vía. Es verdad que pfSense te humaniza el trabajo, pero no me cuadra así.

    Sigue así.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*