utf-8 - tutorial - openssl linux
¿Cómo crear CSR con el tema utf8 en openssl? (3)
Intento generar solicitud de firma de certificado con el tema 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:
La codificación de terminal es UTF-8, tengo el mismo problema cuando uso el asunto de la línea de comando (...) -subj /C=PL/ST=zażółć/ gęślą/ jaźń/O=my-company/CN=ThisIsMeForSure
Cuando -utf8
el -utf8
, el CSR se genera con todos los caracteres no ascii reemplazados con notación hexadecimal (por ejemplo, ó
convierte en /xC3/xB3
). Tal CSR no puede leerse correctamente con php ( openss_x509_parse
) - el original ó
se lee como cuatro bytes, representando dos personajes extraños ...
¿Qué estoy haciendo mal?
Intenta usar la opción string_mask:
string_mask
Esta opción enmascara el uso de ciertos tipos de cadenas en ciertos campos. La mayoría de los usuarios no necesitarán cambiar esta opción.
Se puede establecer en varios valores predeterminados, que también es la opción predeterminada. Utiliza PrintableStrings, T61Strings y BMPStrings si se usa el valor de pkix, entonces solo se usarán PrintableStrings y BMPStrings. Esto sigue la recomendación de PKIX en RFC2459. Si se utiliza la opción utf8only, solo se usarán UTF8Strings : esta es la recomendación de PKIX en RFC2459 después de 2003. Finalmente, la opción de nombstr solo usa PrintableStrings y T61Strings: cierto software tiene problemas con BMPStrings y UTF8Strings: en particular Netscape.
He tenido éxito con el comando
openssl req -new -utf8 -nameopt multiline,utf8 -config example.com.cnf -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
Donde example.com.cnf
es un archivo de configuración en 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
Se muestra correctamente en Chrome, Firefox y Safari.
Cualquier trabajo Unicode para mí, desde el archivo 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=中国/[email protected]" -config C:/Temp/openssl.cnf''); ?>