Estoy en una compensación entre el uso de OpenSSL o NSS en una aplicación de Linux incorporada que hace uso de un TPM (HSM).
EDITAR: necesito un servidor SSH y Apache usando TLS, ambos usando las claves protegidas por el TPM.
Estoy buscando satisfacer las siguientes restricciones:
- Buena compatibilidad con PKCS # 11 (al menos gestión de claves de curva elíptica)
- No demasiadas dependencias
- Compilación cruzada amigable
Por lo que pude encontrar, NSS soporta de forma nativa PKCS # 11, y OpenSSL necesita un motor externo, libengine-pkcs11-openssl, que solo admite claves RSA. Así que una elección de OpenSSL me llevaría a agregar funcionalidades a este motor. ¿Hay otros motores PKCS11 disponibles para OpenSSL con mejor soporte que este?
En cuanto a las dependencias, NSS requiere el Tiempo de ejecución portátil de Netscape (NSPR). En total, NSS y sus dependencias tienen 2.5 veces más líneas de código que OpenSSL. Esto es un inconveniente y, posiblemente, un impedimento para las aplicaciones integradas, excepto que partes de la misma que no sirven para la aplicación se pueden eliminar fácilmente de la compilación a través de algunas definiciones. ¿Es posible?
Respecto a la compilación cruzada, la comparación de wikipedia dice que NSS es incómodo. ¿Alguien tiene un tutorial o un enlace, por favor?
Más en general, el consejo de las personas que han experimentado uno o ambos con un TPM es bienvenido.