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.

https://docs.oracle.com/en/industries/communications/session-border-controller/8.4.0/rest/enable-https.html

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:

https://docs.oracle.com/en/industries/communications/session-border-controller/8.4.0/rest/use-cases.html