Integración#
El capítulo describe procesos para diversas tareas y se dirige a todos los grupos de usuarios.
REST-API#
La interfaz principal de NetHSM es una moderna REST-API que garantiza el mejor rendimiento y funcionalidad. La especificación de la API está disponible en formato OpenAPI, y puede inspeccionarse y probarse en el navegador de API ` <https://nethsmdemo.nitrokey.com/api_docs/index.html>`_ .
PKCS#11#
El NetHSM soporta el estándar PKCS#11. El controlador necesario está disponible en el repositorio ` <https://github.com/Nitrokey/nethsm-pkcs11>` __. El repositorio contiene el código fuente y las bibliotecas para diferentes sistemas operativos. La guía PKCS#11 describe el uso en detalle.
Desarrollo y pruebas#
Instancia de demostración#
Hay disponible una instancia pública de demostración de NetHSM en nethsmdemo.nitrokey.com. Se reiniciará cada ocho horas (CET 6:00, 14:00, 22:00). Usuario «admin», contraseña «adminadmin», contraseña de desbloqueo «unlockunlock».
Imagen del contenedor#
La imagen del contenedor se distribuye como una imagen OCI y puede obtenerse en Docker Hub. Puede ejecutarse localmente con un ejecutor compatible, por ejemplo, Docker o Podman.
En comparación con el hardware NetHSM, las siguientes funciones no están implementadas en la API REST del contenedor de software:
configuración de red
restablecimiento de fábrica
reiniciar
actualización del software
El contenedor puede ejecutarse del siguiente modo.
$ sudo docker run --rm -ti -p8443:8443 nitrokey/nethsm:testing
$ podman run --rm -ti -p8443:8443 docker.io/nitrokey/nethsm:testing
Esto ejecutará NetHSM como un proceso Unix dentro del contenedor y expondrá la API REST en el puerto 8443 a través del protocolo HTTPS.
Además de ejecutar NetHSM como un proceso Unix, puede ejecutarse como un unikernel soportado por KVM.
El contenedor puede ejecutarse del siguiente modo.
$ docker run -ti --rm -p 8443:8443 --device /dev/net/tun --device /dev/kvm --cap-add=NET_ADMIN nitrokey/nethsm:testing
Esto ejecutará NetHSM como un unikernel dentro de una máquina virtual KVM. El contenedor expondrá la API REST, a través del protocolo HTTPS, en la interfaz tap200 con la dirección IP 192.168.1.100 y el puerto 8443.
Importante
El contenedor utiliza un certificado TLS autofirmado. Asegúrese de utilizar la configuración de conexión correcta para establecer una conexión. Consulte el capítulo Introducción a NetHSM para obtener más información.
Integración en la aplicación personalizada#
Para integrar NetHSM en sus propias aplicaciones personalizadas, existen bibliotecas cliente para casi todos los lenguajes de programación. Aquí están las bibliotecas para Python y Rust así como esta tercera parte Rust crate. Para todos los demás lenguajes de programación recomendamos utilizar OpenAPI Generator.
La lista de todos los idiomas disponibles se puede recuperar de la siguiente manera.
$ docker run --rm -ti openapitools/openapi-generator-cli list -i stable
$ podman run --rm -ti openapitools/openapi-generator-cli list -i stable
El cliente NetHSM puede ser generado para su lenguaje de programación de la siguiente manera.
$ docker run --rm -ti -v "${PWD}/out:/out" openapitools/openapi-generator-cli generate -i=https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml -o out -g javascript
$ podman run --rm -ti -v "${PWD}/out:/out" openapitools/openapi-generator-cli generate -i=https://nethsmdemo.nitrokey.com/api_docs/nethsm-api.yaml -o out -g javascript
El código cliente generado, en este ejemplo JavaScript, se creará en el directorio ./out/
. Esta carpeta también contiene la documentación necesaria para su uso.
Importante
Si Podman se utiliza con SELinux reforzado, puede ser necesario etiquetar el montaje del volumen. El modo de SELinux se puede solicitar con sestatus |grep "Current mode"
. Si el modo es enforcing
, se requiere un cambio en el contexto. En este caso el montaje del volumen debe ser postfijado con :z
, resultando -v "${PWD}/out:/out:z"
.
Interfaz de línea de comandos#
Los usuarios pueden administrar y utilizar un NetHSM utilizando una interfaz de línea de comandos (CLI) dedicada. Nitrokey ofrece nitropy
, que se distribuye en la aplicación basada en Python pynitrokey. Con nethsm
existe una aplicación alternativa de terceros, que está desarrollada en el crate de Rust nethsm-cli.