OpenSSL convierte caracteres a literales UTF-8

OpenSSL convierte caracteres a literales UTF-8

Estoy ejecutando una aplicación web PKI simple en PHP que usa comandos de shell OpenSSL y almacena información en una base de datos de texto. Tengo que lidiar con caracteres de entrada que no son ASCII (por ejemplo, alemán), pero cuando se crea un nuevo certificado, los campos se convierten en

[...] /C=DE/ST=H\xC3\xA4mburg/L=H\xC3\xA4mburg/O=\xC3\x9FBCD/OU=\xC3\xA4BC/ [...]

he añadido

[req]
utf8                = yes
string_mask         = utf8only
name_opt            = multiline,-esc_msb,utf8

a los archivos de configuración de OpenSSL, y los certificados se crean usando

openssl req -utf8 [...]
openssl ca -utf8 [...]

El programa escribe archivos de configuración temporales utilizados para solicitar y crear el certificado de usuario. Lo verifiqué y los campos en el archivo de configuración del usuario están bien, así como en los de CA. El problema aparece cuando OpenSSL crea los certificados. La base de datos y los certificados contienen estos códigos en lugar de los caracteres correctos.

También intenté convertir el archivo de la base de datos a UTF-8, iconvpero el archivo permanece en formato US-ASCII.Este enfoquecambia lo que file --mime-encodinggenera a utf-8, pero OpenSSL continúa escribiendo nuevas entradas de la misma manera que antes.

También mencionaré que enviaré el encabezado utf-8 y lo configuraré AddDefaultCharset utf-8en virtualhosts. La configuración regional está configurada de_DE.utf8en el código y en el servidor.

¿Qué me estoy perdiendo? Se agradece cualquier ayuda.

Respuesta1

También estuve luchando con esto durante días y finalmente lo hice funcionar.

-utf8en la línea de comando y utf8 = yesen la configuración parece un poco redundante.

Lo usé -utf8 -nameopt multiline,utf8en la línea de comandos, no escapé de nada en el archivo de configuración (probé varias versiones de eso pero ninguna funcionó) que diceTexto Unicode UTF-8cuando corro file <configfile>.

Mi configuración regional y cli están configurados para usar entrada y salida utf-8, la configuración es similar a:

[req]
prompt = no
distinguished_name = subject

[subject]
C = DE
ST = myutf8state
L = myutf8locality
O = myutf8organization
OU = myutf8organizational unit
CN = my.common.name

Encontré que estas 2 preguntas en stackoverflow fueron de ayuda:

información relacionada