Escribir una implementación SSL que funcione no es difícil cuando lo haces a menudo; Ya lo he hecho cuatro veces (para varios clientes, nada se abre, por desgracia). Tarda unos 3 días, quizás 4 o 5 si quieres hacerlo correctamente (al menos eso es lo que me lleva) (*).
Producir una nueva biblioteca SSL no sería un problema, y tampoco sería una solución. Ya hay varios más allá de OpenSSL, por ejemplo, GnuTLS , PolarSSL , CyaSSL ... Consulte la página de Wikipedia para una lista. La mayoría son de código abierto.
Lo que es difícil es mantenimiento . Es un trabajo agotador mantener la biblioteca actualizada con nuevas versiones de protocolo, nuevas funciones, problemas de interoperabilidad (las soluciones necesarias para comunicarse con otras bibliotecas existentes que no se ajustan necesariamente al estándar) ... El código fuente de OpenSSL es muy difícil para leer, pero eso se debe a que ha crecido a partir de un núcleo históricamente simple pero antiguo, y ha desarrollado extensiones, nuevas API y características alarmantes, incluida una parte justa de "correcciones" para evitar errores de compilación.
(*) Excluyendo la validación X.509 con todas las funciones. La creación de rutas, el procesamiento de todas las extensiones y el manejo de la revocación, es toda una tarea. Un mecanismo de validación primitivo para casos específicos es bastante fácil, pero el soporte X.509 es bastante difícil. No me gustaría implementar tal cosa en C.