Procedimiento para consumir la API de los productos Oracle Acme Packet
Consumir el API de los SBC´s puede ser muy util a la hora de automatizar las configuraciones en grandes entornos de trabajo de escalabilidad horizontal, donde nuestos SBC´s muchas veces tienen configuraciones muy similares o iguales.
Para poder utilizarla de forma nativa necesitamos:
- Tener instalado un certificado TLS, que nos permita un conexión segura https en el SBC
- Habilitar http-server en el SBC
- Tener configurado dns-domain en el SBC alguna network-interface
- Tener configurado un TLS-profile en el SBC.
- Tener instalado CurL en la maquina que lanzara las request
En esta URL de Oracle, se explica el procedimiento de configuración para exponer el API, extrayendo el certificate-request del SBC, que tendríamos que enviar a nuestra entidad certificadora CA para que la validara y nos enviara el certificado a implementar.
En cualquier caso necesitaremos habilitar https en el SBC, seguir el link de arriba para instalarlo
Si ya tenemos un certificado TLS instalado en el SBC, podemos pensar que funcionara a la primera, pero debemos tener en cuenta que la IP de nuestro laboratorio, no esta certificada por ninguna CA, con lo que obtendremos el error «ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY» si intentamos acceder la ruta https://<ip>, dado que nuestro certificado esta emitido para un DNS que no es nuestra IP.
Si intentamos realizar la primera request del manual para iniciar la autenticacion:
curl -X POST \ --header "Accept: application/xml" \ --user admin:<password> \ 'https://10.0.0.2/rest/v1.1/auth/token'
Cambiando los datos por los nuestros password e IP, veremos que tambien obtenemos un error, por consola:
curl: (60) SSL: no alternative certificate subject name matches target host name '10.35.134.12' More details here: https://curl.haxx.se/docs/sslcerts.html<
curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.>
Este error es debido a lo mismo, nuestro certificado esta emitido para un DNS que no es nuestra IP, tenemos varias formas de evitar esto, podemos evitar la comprobación del certificado, de 2 maneras (con los flags «-k» o «–insecure»):
curl -X POST -k \ --header "Accept: application/xml" \ --user admin:<password> \ 'https://10.0.0.2/rest/v1.1/auth/token'
curl -X POST \ --insecure \ --header "Accept: application/xml" \ --user admin:<password> \ 'https://10.0.0.2/rest/v1.1/auth/token'
Para poder utilizar la verificación de seguridad sin evadir el certificado de forma local, debemos tener configurado en el sbc «dns-domain» (con la DNS de nuestro certificado, por ejemplo jblazquez.es) en alguna interface y añadir en la maquina que lanzara las request la resolucion DNS en /etc/hosts:
10.35.0.1 sbc01test.jblazquez.es
Cambiando los datos por los tuyos
De esta manera siempre que nuestro certificado sea un wildcard, por ejemplo *.jblazquez.es, como nuestra resolucion sera correcta en la CA, tendremos una salida valida de comando Curl:
curl -X POST \ --header "Accept: application/xml" \ --user admin:<password> \ 'https://sbc01test.jblazquez.es/rest/v1.1/auth/token'
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<data>
<accessToken>YWRtaW4sYWRtaW4sMjAxOC0wOC0wOSAxOToyNzowzVmM2FhNGMzZjMyZDlkNWJmYzg4O</accessToken>
</data>
<messages/>
<links/>
</response>
Que nos devolverá el TOKEN para lanzar nuestras request al SBC.
Para utilizar este TOKEN sin tener que copiarlo cada vez, lo añadimos a una variable local con el comando:
export TOKEN=' YWRtaW4sYWRtaW4sMjAxOC0wOC0wOSAxOToyNzowzVmM2FhNGMzZjMyZDlkNWJmYzg4O '
Ahora ponemos montar nuestras request para el SBC, utilizando los métodos «GET» y «POST», veamos un ejemplo:
curl -X POST \ --header "Accept: application/xml" \ --header "Authorization: Bearer $TOKEN" \'https://sbc01test.jblazquez.es/rest/v1.1/statistics/kpis?type=sysCPUUtil'
Con esta request obtenemos el uso de CPU en la maquina actualmente:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<data>
<sysCPUUtilPercent>
<percentUsed>1</percentUsed>
</sysCPUUtilPercent>
</data>
<messages/>
<links>
<link>https://sbc01test.jblazquez.es/rest/v1.1/statistics/kpiTypes?type=sysCPUUtil</link>
</links>
</response>
Es una pequeña introducción al uso del API de Oracle Acme Packet, continuare actualizando y mejorando este POST.
Una vez en este punto puede explorar la amplia documantacion de Oracle para la explotacion de su API en el siguiente link: