Integración REST de ServiceNow: Configurar ServiceNow
A continuación se describe cómo configurar ServiceNow para realizar una llamada REST contra EJBCA que recopilará metadatos para cada certificado y creará un informe de consulta de base de datos genérico que contiene todos los metadatos del certificado ( nombre de usuario, estado de revocación, fecha de vencimiento, DN del sujeto y DN del emisor ).
Configurar la autenticación mutua
A continuación se enumeran los pasos necesarios para configurar la autenticación mutua para establecer confianza.
Para configurar la autenticación mutua:
Inicie sesión en la consola de administración de Service Now.
En la barra de filtro, escriba Certificados.
Seleccione Certificados en Definiciones del sistema.
A continuación, realice los pasos de las siguientes secciones para configurar almacenes de confianza.
Almacén de confianza de autenticación PKCS12
Para configurar el almacén de confianza de autenticación PKCS12:
En la página Definición del sistema > Certificados , seleccione Nuevo.
Complete los siguientes campos:
Nombre: Ingrese EJBCA-RA.
Tipo: Seleccione Almacén de claves PKCS12 en el menú desplegable.
Contraseña del almacén de claves: Ingrese la contraseña PKCS12.
Activo: Seleccionado.
Breve descripción: Autoridad de Registro EJBCA.
Seleccione el ícono Adjunto debajo de la barra de búsqueda, seleccione Elegir archivo y seleccione el archivo P12 .
Haga clic en Actualizar.
Almacén de confianza de la autoridad de certificación (CA emisora de RA EJBCA)
Para configurar el almacén de confianza de la autoridad de certificación (CA emisora de RA EJBCA):
En la página Definición del sistema > Certificados , seleccione Nuevo .
Complete los siguientes campos:
Nombre: Ingrese EJBCA-RA-IssuingCA.
Formato: PEM.
Tipo: Almacén de certificados de confianza.
Activo: Seleccionado.
Copie y pegue el certificado base64 de la CA que emitió el certificado RA en el campo Certificado PEM .
Haga clic en Actualizar.
Almacén de confianza de la autoridad de certificación (CA emisora de certificados TLS EJBCA)
Estos pasos solo son necesarios si es diferente de la CA emisora de RA.
Para configurar el almacén de confianza de la autoridad de certificación (CA emisora de certificados TLS EJBCA):
En la página Definición del sistema > Certificados , seleccione Nuevo.
Complete los siguientes campos:
Nombre: Ingrese EJBCA-TLS-IssuingCA.
Formato: PEM.
Tipo: Almacén de certificados de confianza.
Activo: Seleccionado.
Copie y pegue el certificado base64 de la CA que emitió el certificado TLS en el campo Certificado PEM .
Haga clic en Actualizar.
Configurar el mensaje de estado REST
Para configurar y probar el mensaje de estado REST:
En la barra de filtro, escriba Mensaje REST.
Seleccione Mensaje REST en Servicios web del sistema.
Haga clic en Nuevo.
Complete los siguientes campos:
Nombre: EJBCA
Punto final: https://ejbcafqdn/ejbca/ejbca-rest-api
Usar autenticación mutua: Seleccionado
Junto al perfil de autenticación mutua , haga clic en el ícono Buscar .
Haga clic en Nuevo junto a Métodos HTTP.
Introduzca ejbcatls en el campo Protocolo .
Seleccione el campo Almacén de claves y seleccione EJBCA-RA.
Haga clic en Enviar.
Seleccione EJBCA de la lista de mensajes REST .
Haga clic en Nuevo.
Complete los siguientes campos:
Nombre: Verificación de estado
Punto final: https://ejbcafqdn/ejbca/ejbca-rest-api/v1/certificate/status
Usar autenticación mutua: Seleccionado
Haga clic en el icono de búsqueda y seleccione ejbcatls
Haga clic en Enviar.
Seleccione el mensaje REST de verificación de estado .
Prueba de clic:
La pantalla se cargará con la respuesta que comienza con {"status":"OK","version":"1.0","revision"}.
Si no se devuelve un estado "OK" , repita los pasos anteriores hasta que se devuelva un estado "OK" .
El estado "OK" indica que la autenticación mutua, las reglas de acceso de la Autoridad de Registro y las configuraciones iniciales del protocolo REST son correctas.
No continúe con los procedimientos restantes hasta que se devuelva el estado OK anterior del mensaje de prueba REST.
Crear tabla de consulta de certificados
Las siguientes secciones proporcionan los pasos necesarios para ejecutar trabajos programados que generan informes sobre certificados que vencen mediante la llamada de descanso de búsqueda de certificados :
Crear llamada REST de búsqueda de certificado
Para crear una llamada REST de búsqueda de certificado:
En la barra de filtro, escriba Mensaje REST.
Seleccione Mensaje REST en Servicios web del sistema.
Haga clic en Nuevo.
Complete los siguientes campos:
Nombre: EJBCA
Punto final: https://ejbcafqdn/ejbca/ejbca-rest-api/v2
Usar autenticación mutua: Seleccionado
Junto al perfil de autenticación mutua , haga clic en el ícono Buscar .
Haga clic en Nuevo junto a Métodos HTTP.
Introduzca ejbcatls en el campo Protocolo .
Seleccione el campo Almacén de claves y seleccione EJBCA-RA.
Haga clic en Enviar.
Seleccione EJBCA de la lista de mensajes REST .
Haga clic en Nuevo en la lista de Métodos HTTP .
Complete los siguientes campos:
Nombre: Búsqueda de certificados V2
Método HTTP: POST
Punto final: https://ejbcafqdn/ejbca/ejbca-rest-api/v2/certificate/search
Usar autenticación mutua: Seleccionado
Haga clic en el icono de búsqueda y seleccione ejbcatls
Haga clic en Enviar.
Seleccione la búsqueda de certificados V2 Método HTTP.
En la sección Sustitución de variables en la parte inferior, haga clic en Nuevo.
Haga clic en la pestaña Solicitud HTTP .
En Encabezados HTTP, haga doble clic en " Insertar una nueva fila...", escriba Aceptar en el cuadro de texto y haga clic en la marca de verificación verde.
Haga doble clic en la columna Valor de la misma fila, ingrese application/json en el cuadro de texto y haga clic en la marca de verificación verde.
En la siguiente fila ingrese Content-Type y application/json.
Haga clic en Actualizar.
Seleccione el método HTTP de búsqueda de certificado V2 .
En Parámetros de consulta HTTP, ingrese el texto en el cuadro a continuación en el cuadro Contenido y haga clic en Probar.
El estado HTTP debe ser 200 y el cuadro de Respuesta debe tener un cuerpo de éxito de la llamada REST.
Haga clic en Eliminar.
Esta llamada REST devolverá los 10 000 certificados más recientes con estado ACTIVO . Aumente el tamaño de página para capturar más certificados.
{"pagination" : { "page_size" : 10000 , "current_page" : 1}, "sort" : { "property" : "UPDATE_TIME" , "operation" : "ASC"}, "criteria" : [{ "property" : "CERT_STATUS" , "value" : "ACTIVE" , "operation" : "EQUAL"}]} Crear tabla de consulta
Para crear una tabla de consulta de certificado EJBCA:
En la barra de filtro, escriba tablas y seleccione Tablas en Definición del sistema.
Haga clic en Nuevo.
Introduzca la tabla de consulta de certificado EJBCA en el campo Etiqueta .
Copia el nombre generado a partir de la etiqueta y pégalo en un editor de texto. Lo necesitarás más adelante.
Haga clic en Enviar.
Cambie el campo de búsqueda a Etiqueta e ingrese Tabla de consulta de certificado EJBCA en el cuadro de texto.
Haga clic en Tabla de consulta de certificados EJBCA.
Haga clic en Nuevo en la sección Columnas .
Ingrese una cadena en el campo Tipo y seleccione Cadena (UTF-8 completo).
Introduzca la fecha de revocación como etiqueta de columna.
Haga clic en Enviar.
Repita los pasos anteriores para las columnas restantes utilizando la lista a continuación y haga clic en Actualizar cuando termine:
Motivo de revocación
Fecha de expiración
DN del emisor
Número de serie
Estado
Nombre(s) alternativo(s) del sujeto
Identificador de clave de sujeto
Tipo
Última actualización
Usuario
Haga clic en Actualizar.
Crear tabla de ensayo
La llamada REST de búsqueda de certificado debe analizar los datos JSON devueltos desde el cuerpo de la respuesta y colocarlos en una tabla de ensayo para su posterior transformación. La transformación se realizará y los datos se colocarán en la tabla utilizada para los informes.
Cree un archivo CSV con los encabezados a continuación en la Fila 1 y guárdelo como data_set_table. Los encabezados distinguen entre mayúsculas y minúsculas y deben coincidir con el contenido del cuerpo de la respuesta para que se carguen.
Fecha de revocación
Motivo de revocación
fecha de vencimiento
DN del emisor
número de serie
estado
subjectAltName
subjectDN
ID de clave del sujeto
tipo
hora de actualización
nombre de usuario
En la barra de filtro, escriba cargar datos y selecciónelo
Introduzca la consulta del certificado EJBCA en el campo Etiqueta
Copia el nombre generado a partir de la etiqueta y pégalo en un editor de texto. Esto será necesario más adelante.
Seleccione Elegir archivo y seleccione data_set_table.
Haga clic en Enviar.
Una página de Progreso mostrará un estado de Completado.
Haga clic en el hipervínculo Crear un mapa de transformación .
Crear mapeo de transformación
Para crear una asignación de transformación de consulta EJBCA:
En la barra de filtro, escriba transformar mapas y selecciónelo.
Haga clic en Nuevo.
Ingrese al mapeo de transformación de consultas EJBCA.
Haga clic en el menú desplegable Tabla de origen , ingrese ejbca y seleccione la tabla de almacenamiento temporal en el menú desplegable.
Haga clic en Tabla de destino.
Haga clic en Enviar.
Cambie el campo de búsqueda a Etiqueta e ingrese EJBCA Query Transform Mapping en el cuadro de texto.
Haga clic en Asignación de transformación de consultas EJBCA.
Haga clic en el enlace Asistencia de mapeo en Enlaces relacionados.
En la columna izquierda, seleccione todos los encabezados del archivo data_set_table y haga clic en Agregar.
En la columna de la derecha, haga clic en cada elemento, haga clic en Agregar y mueva el elemento hacia arriba o hacia abajo hasta que esté en línea con el encabezado data_set_table .
Haga clic en Guardar.
En los mapas de campo, cambie el valor de Coalesce para serial_number a verdadero.
Haga clic en Actualizar y luego en Aceptar en la solicitud para indexar la tabla debido a la función Coalesce .
Crear script incluye
Realice los pasos de las secciones siguientes para crear scripts:
Crear getJSONObjectsViaRest
En la barra de filtro, escriba transformar mapas y selecciónelo.
Haga clic en Nuevo.
Ingrese getJSONObjectsViaRest en el campo Nombre .
Cambiar Accesible de a Todos los ámbitos de aplicación.
Pegue el bloque de código a continuación en el cuadro Script y haga clic en Enviar.
function getJSONObjectsViaRest(endpoint, objects, api, request) { var pagedR = new sn_ws.RESTMessageV2(api, request); if (endpoint !== null ) {pagedR.setEndpoint(endpoint);} var pagedResponse = pagedR.execute(); var pagedResponseBody = pagedResponse.getBody(); var pagedhttpStatus = pagedResponse.getStatusCode(); var pagedObj = JSON.parse(pagedResponseBody);objects = objects.concat(pagedObj.certificates); return objects;} Crear insertGlideRecord
Haga clic en Nuevo.
Introduzca insertglideRecord en el campo Nombre .
Cambiar Accesible de a Todos los ámbitos de aplicación.
Pegue el bloque de código a continuación en el cuadro Script y haga clic en Enviar.
function insertGlideRecord(GlideReference, field, value) { if (GlideReference.isValidField(field)) {GlideReference.setValue(field, value);}} Crear loadRestInTable
Haga clic en Nuevo.
Introduzca loadRestInTable en el campo Nombre .
Cambiar Accesible de a Todos los ámbitos de aplicación.
Pegue el bloque de código a continuación en el cuadro Script y haga clic en Enviar.
function loadRestInTable(rest_message, http_method, target_table) { try { var objects = getJSONObjectsViaRest( null , [], rest_message, http_method); for ( var i=0; i<objects.length; i++ ) {parseJSONObject(objects[i], target_table);}} catch (ex) { var message = ex.message;gs.info( 'JSON IMPORT ERROR: ' + message);}} Crear parseJSONObject
Haga clic en Nuevo.
Ingrese parseJSONObject en el campo Nombre .
Cambiar Accesible de a Todos los ámbitos de aplicación.
Pegue el bloque de código a continuación en el cuadro Script y haga clic en Enviar .
function parseJSONObject(object, target_table) { var JSONImport = new GlideRecord(target_table);JSONImport.initialize(); for ( var key in object) { if (object.hasOwnProperty(key)) { var field = key.toLowerCase(); var actualField = "" ; var value = "" ; if ( typeof (object[key]) === "object" ) { if (!Array.isArray(object[key])) { for ( var inner_key in object[key]) {actualField = ( 'u_' + field + "_" + inner_key).toLowerCase();value = object[key][inner_key];insertGlideRecord(JSONImport, actualField, value);}}} else {value = object[key].toString();actualField = 'u_' + field;}insertGlideRecord(JSONImport, actualField, value);}}JSONImport.insert();} Crear calendario diario
Para crear un calendario diario:
En la barra de filtro, escriba calendario y selecciónelo.
Haga clic en Nuevo.
Introduzca “Todos los días” en el campo Nombre .
Haga clic en Nuevo en la lista Días .
Seleccione lunes en el menú desplegable Día de la semana y haga clic en Enviar.
Repita el paso 5 durante los 6 días restantes.
Crear trabajo programado
Para crear un trabajo programado:
En la barra de filtro, escriba trabajos programados y seleccione Trabajos programados en Definición del sistema.
Haga clic en Nuevo.
Seleccione Ejecutar automáticamente un script de su elección.
Ingrese EJBCA - Consulta de certificado diaria en el campo Nombre .
Seleccione Diariamente en la lista desplegable Ejecutar .
Introduzca 02 00 00 en el campo Hora .
Ingrese lo siguiente en el cuadro Ejecutar y haga clic en Enviar.
Actualice el nombre de la consulta para que coincida con el nombre en ServiceNow:
loadRestInTable( 'EJBCA' , 'Certificate Search V2' , 'x_138548_demo_ejbca_certificate_query' ); 1.ª var = Mensaje REST, 2.ª var = Método HTTP configurado en el Mensaje REST, 3.ª var = Tabla de ensayo.
Asegúrese de modificar estos valores si se utilizan nombres diferentes para las tres variables que se llaman.
Generar un informe genérico a partir de la consulta de base de datos
Para generar un informe genérico a partir de la consulta de la base de datos:
En la barra de filtro, escriba informes y seleccione Crear nuevo en Informes.
Ingrese EJBCA: consulta de base de datos genérica.
Haga clic en el menú desplegable Tabla e ingrese el nombre de la tabla generada cuando se creó la tabla de consulta de certificado EJBCA en el pasoCrear tabla de consulta .
Haga clic en Siguiente.
Seleccione Lista en Otro.
Haga clic en Siguiente.
Haga clic en Elegir columnas y seleccione los campos deseados.
Haga clic en Guardar en la parte superior derecha.
Consulta de prueba e informe
Como paso final, ahora puedes probar la consulta y el informe.
Es necesario generar un certificado en EJBCA antes de completar el procedimiento de prueba.
Para probar la consulta y ver el informe creado que contiene todos los metadatos del certificado:
Regrese a EJBCA - Consulta de certificado diario en Definición del sistema > Trabajos programados .
Haga clic en Ejecutar ahora .
Regrese a la consulta de base de datos genérica EJBCA y vea los datos de respuesta.