我正在尝试使用UTF-8主题生成证书签名请求。
$ openssl req -utf8 -nodes -newkey rsa:2048 -keyout my.private_key.pem -out my.csr.pem -text
Generating a 2048 bit RSA private key
......................................................................................................................................................................+++
......+++
writing new private key to 'my.private_key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [PL]:
State or Province Name (full name) []:Zażółć gęślą jaźń
problems making Certificate Request
12376:error:0D07A07C:asn1 encoding routines:ASN1_mbstring_ncopy:illegal characters:a_mbstr.c:162:
终端编码是UTF-8,当我使用命令行主题时,我遇到同样的问题
(...) -subj /C=PL/ST=zażółć\ gęślą\ jaźń/O=my-company/CN=ThisIsMeForSure
当我跳过-utf8
开关时,会生成CSR,并将所有非ascii字符替换为十六进制表示法(例如ó
变为\xC3\xB3
)。使用php(openss_x509_parse
)无法正确读取此类CSR - 原始ó
被读取为四个字节,代表两个奇怪的字符......
我做错了什么?
答案 0 :(得分:17)
我已成功完成命令
openssl req -new -utf8 -nameopt multiline,utf8 -config example.com.cnf -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
其中example.com.cnf
是UTF-8中的配置文件:
[req]
prompt = no
distinguished_name = dn
req_extensions = ext
[dn]
CN = Описание сайта # Site description
emailAddress = envek@envek.name
O = Моя компания # My company
OU = Моё подразделение # My dept
L = Москва # Moscow
C = RU
[ext]
subjectAltName = DNS:example.com,DNS:*.example.com
在Chrome,Firefox和Safari中正确显示。
答案 1 :(得分:1)
尝试使用string_mask选项:
<强> string_mask 强>
此选项会屏蔽某些字段中某些字符串类型的使用。大多数用户无需更改此选项。
它可以设置为默认的几个值,如果使用pkix值,则默认选项使用PrintableStrings,T61Strings和BMPStrings,然后只使用PrintableStrings和BMPStrings。这遵循RFC2459中的PKIX建议。 如果使用utf8only选项,则只使用UTF8Strings :这是2003年后RFC2459中的PKIX建议。最后,nombstr选项只使用PrintableStrings和T61Strings:某些软件有BMPStrings和UTF8Strings的问题:in特别是Netscape。
答案 2 :(得分:0)
任何unicode都可以从php文件中为我工作。
<? shell_exec('openssl req -new -md5 -utf8 -key C:/Temp/1.key -out C:/Temp/1.csr -subj "/C=MD/ST=ff/O=Religie/OU=Cen/CN=中国/emailAddress=test@religiasatanista.ro" -config C:/Temp/openssl.cnf'); ?>