error: ASN1_mbstring_ncopy:illegal characters

raf openssl at raf.org
Wed Apr 12 00:55:17 UTC 2023


On Tue, Apr 11, 2023 at 09:43:20AM -0500, Mark Hack <markhack at markhack.com> wrote:

> On Tue, 2023-04-11 at 23:40 +1000, raf via openssl-users wrote:
> > Hi,
> > 
> > I'm trying to create a CSR for an SMIME certificate for
> > an email address with non-ASCII characters (localpart
> > and domain), and I'm getting this error after entering
> > äbç@être.org as the email address:
> > 
> >   139749651649856:error:0D07A07C:asn1 encoding
> > routines:ASN1_mbstring_ncopy:illegal
> > characters:../crypto/asn1/a_mbstr.c:115:
> > 
> > The error message is similar if the only non-ASCII
> > characters are in the domain name, or if they are only
> > in the localpart (only the leading number in the error
> > message changes). It's just for testing purposes, and
> > I'm only really interested in the domain part.
> > 
> > I must be doing something wrong. How can I use
> > non-ASCII (UTF8-encoded Unicode characters,
> > LANG=en_AU.UTF-8)? It looks like it's expecting
> > multi-byte strings (a_mbstr.c).
> > 
> > My smime.cnf contains:
> > 	[req]
> > 	distinguished_name = req_distinguished_name
> > 
> > 	[req_distinguished_name]
> > 	countryName = Country Name (2 letter code)
> > 	countryName_default = AU
> > 	countryName_min = 2
> > 	countryName_max = 2
> > 	stateOrProvinceName = State or Province Name (full name)
> > 	stateOrProvinceName_default = Some-State
> > 	localityName = Locality Name (eg, city)
> > 	0.organizationName = Organization Name (eg, company)
> > 	0.organizationName_default = Internet Widgits Pty Ltd
> > 	organizationalUnitName = Organizational Unit Name (eg, section)
> > 	commonName = Common Name (e.g. server FQDN or YOUR name)
> > 	commonName_max = 64
> > 	emailAddress = Email Address
> > 	emailAddress_max = 64
> > 
> > 	[smime]
> > 	basicConstraints = CA:FALSE
> > 	keyUsage = nonRepudiation, digitalSignature, keyEncipherment
> > 	subjectKeyIdentifier = hash
> > 	authorityKeyIdentifier = keyid:always,issuer
> > 	subjectAltName = email:copy
> > 	extendedKeyUsage = emailProtection
> > 
> > And the openssl commands were:
> > 
> >     OPENSSL_CONF=`pwd`/smime.cnf
> > 	# Generate an RSA Private Key for the Certificate Authority
> >     openssl genrsa -aes256 -out ca.key 2048
> > 	# Create Self-Signed Certificate for the Certificate Authority
> >     openssl req -new -x509 -days 365 -key ca.key -out ca.crt
> > 	# Generate an RSA Private Key for the Personal E-Mail
> > Certificate
> >     openssl genrsa -aes256 -out smime_test_user.key 2048
> > 	# Create the Certificate Signing Request
> >     openssl req -new -key smime_test_user.key -out
> > smime_test_user.csr
> > 
> > The error happened during the command above.
> > 
> >     > openssl req -new -key smime_test_user.key -out
> > smime_test_user.csr
> > 
> >     Enter pass phrase for smime_test_user.key:
> >     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) [AU]:
> >     State or Province Name (full name) [Some-State]:
> >     Locality Name (eg, city) []:
> >     Organization Name (eg, company) [Internet Widgits Pty Ltd]:
> >     Organizational Unit Name (eg, section) []:
> >     Common Name (e.g. server FQDN or YOUR name) []:
> >     Email Address []:äbç@être.org
> >     problems making Certificate Request
> >     139749651649856:error:0D07A07C:asn1 encoding
> > routines:ASN1_mbstring_ncopy:illegal
> > characters:../crypto/asn1/a_mbstr.c:115:
> > 
> > So I didn't get to the final command:
> > 
> >     # Sign the Certificate Using the Certificate Authority
> > 	openssl x509 -req -days 365 -in smime_test_user.csr -CA ca.crt
> > -CAkey ca.key -set_serial 1 -out smime_test_user.crt -addtrust
> > emailProtection -addreject clientAuth -addreject serverAuth -trustout
> > -extfile smime.cnf -extensions smime
> > 
> > cheers,
> > raf
>
> Try adding the -utf8 option to the request.
> 
> https://www.openssl.org/docs/man3.1/man1/openssl-req.html
> 
> -utf8
> 
>     This option causes field values to be interpreted as UTF8 strings,
> by default they are interpreted as ASCII. This means that the field
> values, whether prompted from a terminal or obtained from a
> configuration file, must be valid UTF8 strings.
> 
> Regards
> Mark Hack

Thanks, but surprisingly, that didn't work. I first tried adding -utf8
at the end of the command and it made no difference. Then I tried
placing it further to the left, in several locations, just in
case it made any difference, but it resulted in the same error.

I've checked (with od -cx) that the email address I'm pasting is
valid UTF8, and it is.

cheers,
raf



More information about the openssl-users mailing list