OpenSSL convertendo caracteres para literais UTF-8

4

Estou executando um aplicativo da Web PKI simples no Php que usa comandos do shell OpenSSL e armazena informações em um banco de dados de texto. Eu tenho que lidar com caracteres de entrada não-ASCII (por exemplo, alemão), mas quando um novo certificado é criado, os campos se transformam em

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

Adicionei

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

para os arquivos de configuração do OpenSSL, e os certificados são criados usando

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

O programa grava arquivos de configuração temporários usados para solicitar e criar o certificado de usuário. Eu verifiquei e os campos no arquivo de configuração do usuário estão bem, assim como nas CA's. O problema aparece quando o OpenSSL cria os certificados. O banco de dados e os certs contêm esses códigos em vez dos caracteres corretos.

Eu também tentei converter o arquivo de banco de dados para UTF-8 usando iconv , mas o arquivo permanece no formato US-ASCII. Esta abordagem altera o que file --mime-encoding produz para utf-8, mas o OpenSSL continua a escrever novas entradas da mesma forma que antes.

Também mencionarei que estou enviando o cabeçalho utf-8 e configurando AddDefaultCharset utf-8 em virtualhosts. A localidade está definida como de_DE.utf8 no código e no servidor.

O que estou perdendo? Qualquer ajuda é apreciada.

    
por Anca 12.02.2016 / 10:54

0 respostas