Pregunta

Tengo una implementación de SSL HandShake desde el lado del cliente, utilizando estas funciones: SSL_CTX_LOAD_VERIFY_LOCATIONS SSL_CTX_USE_CERTIFATE_CHAIN_FILE SSL_CTX_USE_PRIVATEKEK_FILE

Todas las funciones obtienen el tipo de char* para el parámetro de nombre de archivo. ¿Cómo puedo cambiarlo para admitir también ubicaciones de archivos de Unicode?

¡Gracias!

¿Fue útil?

Solución

¿En qué plataforma? OpenSSL en POSIX admite rutas UTF-8, pero no en otras plataformas. Lo más probable es que tendrá que cargar manualmente los archivos de certificado usted mismo utilizando las funciones de E/S de archivos del sistema operativo estándar que admiten rutas Unicode, y luego analizar los datos sin procesar y cargarlos en OpenSSL, como VIA PEM_read_bio_X509 con sk_X509_NAME_push, PEM_read_bio_PrivateKey/d2i_PrivateKey_bio con SSL_CTX_use_PrivateKey, d2i_X509_bio/PEM_read_bio_X509 con SSL_CTX_use_certificate, etc.

Otros consejos

Quiero responder a la publicación anterior en lugar de crear una nueva respuesta, sin embargo, no pude responderla, así que creo una nueva respuesta. Según mis pruebas de SSL_CTX_LOAD_VERIFY_LOCATIONS y mirando el código OPENSSL, en realidad, OpenSSL usaría UTF-8 para la ruta del archivo también en Windows. En la función bio_new_file para abrir un archivo, elegiría UTF-8 para la ruta del archivo si se definen _win32 y cp_utf8. Esos se definen en Windows. Sin embargo, OpenSSL también tiene código para recurrir a la ruta ANSI si la ruta no es una UTF-8 caracteres válida. Entonces, con eso, en realidad OpenSSL funcionará con la ruta UTF-8 y ANSI en Windows.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top