OpenSSL преобразует символы в литералы UTF-8

OpenSSL преобразует символы в литералы UTF-8

Я запускаю простое веб-приложение PKI на PHP, которое использует команды оболочки OpenSSL и хранит информацию в текстовой базе данных. Мне приходится иметь дело с не-ASCII-вводными символами (например, немецкими), но когда создается новый сертификат, поля превращаются в

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

я добавил

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

в файлы конфигурации OpenSSL, а сертификаты создаются с помощью

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

Программа записывает временные файлы конфигурации, используемые для запроса и создания сертификата пользователя. Я проверил, и поля в файле конфигурации пользователя в порядке, как и в CA. Проблема возникает, когда OpenSSL создает сертификаты. База данных и сертификаты содержат эти коды вместо правильных символов.

Я также попытался преобразовать файл базы данных в UTF-8, iconvно файл остался в формате US-ASCII.Этот подходизменяет file --mime-encodingвывод на utf-8, но OpenSSL продолжает записывать новые записи так же, как и раньше.

Я также упомяну, что я отправляю заголовок utf-8 и настраиваю его AddDefaultCharset utf-8в virtualhosts. Локаль устанавливается de_DE.utf8в коде и на сервере.

Что я упускаю? Любая помощь приветствуется.

решение1

Я тоже боролся с этим несколько дней, и наконец-то это заработало.

-utf8в командной строке и utf8 = yesв конфигурации кажется немного излишним.

Я использовал -utf8 -nameopt multiline,utf8командную строку, я ничего не экранировал в файле конфигурации (я пробовал несколько версий, но ни одна не сработала), в котором говорится:Текст в кодировке UTF-8 Unicodeкогда я бегу file <configfile>.

Моя локаль и cli настроены на использование ввода и вывода utf-8, конфигурация похожа на:

[req]
prompt = no
distinguished_name = subject

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

Мне помогли два вопроса на stackoverflow:

Связанный контент