Introducción
A partir de la versión 4.4.2200.28 se incluye la posibilidad de gestionar certificados de cliente para trabajar con HTTPS. La API lleva integrado por defecto un certificado interno no validado por ninguna autoridad certificadora. Este hecho origina que las consultas realizadas sobre la misma sean marcadas como potencialmente inseguras (aunque realmente no sea así).
Sin embargo, dado que la gestión HTTPS puede ser un punto crítico en determinados clientes que abren la API públicamente para la interconexión con sistemas de terceros (entidades públicas, por ejemplo), es altamente recomendable usar certificados de pago que verifiquen y hagan confiables las conexiones sin necesidad de ser aceptadas por el propio cliente que se conecta.
Con este fin se incluyó la posibilidad de añadir el certificado a la API.
Fichero de configuración
El control y configuración del certificado para incluirlo en AHORA API, se lleva a cabo desde el propio fichero de configuración appsettings.json.
Para ello hay que añadir, manualmente, un nuevo nodo Cert con los datos del propio certificado.
{ "hosturl": "https://servidor:8080", "Data": { "Server": "Nombre", "Database": "BD", "User": "UsuarioEncriptado", "Password": "PasswordEncriptado" }, "ApiAuth": { "Audience": "api" }, "Serilog": { "ManualLog": "False", "MinimumLevel": { "Default": "Warning", "Override": "@{Microsoft=Warning; System=Warning; Microsoft.AspNetCore=Warning}" } }, "Cert": { "Name": "", "Pass": "" } }
En este nuevo nodo se distinguen dos campos:
- "Name": que indica el nombre del fichero generado con el certificado.
- "Pass": que es la contraseña del certificado.
La metodología para obtener el fichero del certificado a partir del certificado instalado en la máquina queda fuera del alcance de este documento. Lo que sí hay que tener en cuenta es que el fichero (.pfx) debe contenerse en la misma ruta de la API o, en su defecto, debe incluirse en la variable Name la ruta relativa a partir del directorio de la API.
DATO: Al ser appsetting.json un fichero json, hay que tener especial cuidad con los caracteres reservados. Por ejemplo, en caso de poner una ruta relativa, es necesario escapar las contrabarras porque el propi carácter \ se toma como carácter de escape.
Una vez incluido este nuevo nodo, y tras reiniciar la API para que refresque los cambios en la configuración, ya debería tener cargado el nuevo certificado. Se puede probar desde el propio swagger.
IMPORTANTE: El cambio de API para pasar entre versiones o Hotfixes supone el borrado de la carpeta y del fichero de configuración appsettings.json. Antes de desinstalar la misma es conveniente guardar una copia del fichero y del propio certificado para, tras la nueva instalación, copiarlos en la ruta previa.
También es recomendable que el certificado del cliente esté incluido en el almacén de certificados confiables del equipo en el que se instale la API para facilitar su uso.