[gnutls-help] certtool, honor_crq_extensions: The request is invalid?

Daiki Ueno ueno at gnu.org
Mon Mar 20 02:59:36 CET 2023


Hello,

Michael Tokarev <mjt at tls.msk.ru> writes:

> Doing a simple certreq.exe -new to generate a crq, and certtool either complains
> or does not do what I think it should.  For example, this crq:
>
> PKCS #10 Certificate Request Information:
> 	Version: 1
> 	Subject: CN=Michael Tokarev,O=AO «CITTS»,C=RU
> 	Subject Public Key Algorithm: RS
> 	Algorithm Security Level: Medium (2048 bits)
> 		Modulus (bits 2048):
> 			...
> 		Exponent (bits 24):
> 			01:00:01
> 	Signature Algorithm: RSA-SHA256
> 	Attributes:
> 		Unknown attribute 1.3.6.1.4.1.311.13.2.3:
> 			ASCII: ..10.0.19044.2
> 			Hexdump: 160c31302e302e31393034342e32
> 		Unknown attribute 1.3.6.1.4.1.311.21.20:
> 			ASCII: 0......MAVE.tls.msk.ru..TLS\mjt-adm..certreq.exe
> 			Hexdump: 302e0201090c0f4d4156452e746c732e6d736b2e72750c0b544c535c6d6a742d61646d0c0b636572747265712e657865
> 		Extensions:
> 			Key Usage (critical):
> 				Digital signature.
> 			Subject Key Identifier (not critical):
> 			029469c015457c9af37c3f71b0ba351eb44aec8a
> 		Unknown attribute 1.3.6.1.4.1.311.13.2.2:
> 			ASCII: 0Z....R.M.i.c.r.o.s.o.f.t. .B.a.s.e. .S.m.a.r.t. .C.a.r.d. .C.r.y.p.t.o. .P.r.o.v.i.d.e.r...
> 			Hexdump:
> 			305a0201021e52004d006900630072006f0073006f006600740020004200610073006500200053006d00610072007400200043006100720064002000430072007900700074006f002000500072006f00760069006400650072030100
> Other Information:
> 	Public Key ID:
> 		sha1:595498a26031d1dca7a5c761ad75bb7b663282ca
> 		sha256:c6153153234e0a490e0110df3f9d21fe3a421cfa920d9ceb32fa3ff41ddcbdb5
> 	Public Key PIN:
> 		pin-sha256:xhUxUyNOCkkOARDfP50h/jpCHPqSDZzrMvo/9B3cvbU=
> Self signature: verified
>
>
> Here's what's happening:
>
> certtool -V -d10 --generate-certificate --load-request mjt.crq --template /dev/stdin <<- EOF
>         expiration_days = 365
>         signing_key
>         honor_crq_extensions
>         #honor_crq_ext = 2.5.29.17
>         #honor_crq_ext = 1.3.6.1
>         #.4.1.311.13.2.2
> EOF
>
> Setting log level to 10
> Generating a signed certificate...
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_copy_data]:1610
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_copy_data]:1610
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/x509/common.c[_gnutls_strdatum_to_buf]:1543
> |<3>| ASSERT: ../../../lib/nettle/mpi.c[wrap_nettle_mpi_print]:60
> |<3>| ASSERT: ../../../lib/nettle/mpi.c[wrap_nettle_mpi_print]:60
> |<3>| ASSERT:
> | ../../../lib/x509/x509_write.c[gnutls_x509_crt_set_subject_key_id]:1609
> set_subject_key_id: The request is invalid.

Assuming this is with GnuTLS 3.7.9 (or a similar version), the last line
means that there was some failure when retrieving a subjectKeyIdentifier
extension from the certificate, where the extension exists but cannot be
retrieved for some reason.

Would it be possible to share the certificate request so I can reproduce
it locally?

> This will always be this way until I remove (comment-out) honor_crq_extensions.
> But later, even when I uncomment other honor_crq_ext= (I tried random ones which
> seems to be present, in this crq or in other crqs), the resulting exts are not
> shown in the generated certificate no matter how I specify them.

The usage of the honor_crq_extensions looks correct to me.

Regards,
-- 
Daiki Ueno



More information about the Gnutls-help mailing list