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以外のすべての文字が16進表記に置き換えられて生成されます(たとえば、ó
は\xC3\xB3
になります)。このようなCSRは、php(openss_x509_parse
)では正しく読み取ることができません。元のó
は4バイトとして読み取られ、2つの奇妙な文字を表します。
私は何が間違っているのですか?
私はコマンドで成功しました
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 = [email protected]
O = Моя компания # My company
OU = Моё подразделение # My dept
L = Москва # Moscow
C = RU
[ext]
subjectAltName = DNS:example.com,DNS:*.example.com
Chrome、Firefox、Safariで正しく表示されます。
String_maskオプションを使用してみてください。
string_mask
このオプションは、特定のフィールドでの特定の文字列タイプの使用をマスクします。ほとんどのユーザーは、このオプションを変更する必要はありません。
デフォルトのいくつかの値に設定できます。これは、デフォルトオプションでもPrintableStrings、T61Strings、およびBMPStringsを使用します。pkix値を使用する場合は、PrintableStringsとBMPStringsのみが使用されます。これは、RFC2459のPKIX推奨に従います。 tf8onlyオプションが使用される場合、UTF8Stringsのみが使用されます:これは2003年以降のRFC2459でのPKIX推奨です。最後にnombstrオプションはPrintableStringsとT61Stringsのみを使用します:特定のソフトウェアにはBMPStringsとUTF8Stringsに問題があります。特定のNetscape。
PhpファイルからのUnicodeの動作。
<? 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=中国/[email protected]" -config C:/Temp/openssl.cnf'); ?>