我在 Php 中运行一个简单的 PKI Web 应用程序,它使用 OpenSSL shell 命令并将信息存储在文本数据库中。我必须处理非 ASCII 输入字符(例如德语)但是当创建新证书时,字段变成
[...] /C=DE/ST=H\xC3\xA4mburg/L=H\xC3\xA4mburg/O=\xC3\x9FBCD/OU=\xC3\xA4BC/ [...]
Run Code Online (Sandbox Code Playgroud)
我已经添加
[req]
utf8 = yes
string_mask = utf8only
name_opt = multiline,-esc_msb,utf8
Run Code Online (Sandbox Code Playgroud)
到 OpenSSL 配置文件,证书是使用创建的
openssl req -utf8 [...]
openssl ca -utf8 [...]
Run Code Online (Sandbox Code Playgroud)
该程序写出用于请求和创建用户证书的临时配置文件。我已经检查过,用户配置文件中的字段以及 CA 中的字段都很好。OpenSSL 创建证书时会出现此问题。数据库和证书包含这些代码而不是正确的字符。
我还尝试使用将数据库文件转换为 UTF-8,iconv但该文件仍为 US-ASCII 格式。这种方法将file --mime-encoding输出内容更改为 utf-8,但 OpenSSL 继续以与以前相同的方式写入新条目。
我还会提到我正在发送 utf-8 标头并AddDefaultCharset utf-8在虚拟主机中进行设置。区域设置de_DE.utf8在代码和服务器上设置为。
我错过了什么?任何帮助表示赞赏。
小智 4
我也为此苦苦挣扎了好几天,终于成功了。
-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
Run Code Online (Sandbox Code Playgroud)
我发现 stackoverflow 上的这两个问题很有帮助:
| 归档时间: |
|
| 查看次数: |
5157 次 |
| 最近记录: |