Can create a cert with no serial number?
David von Oheimb
it at von-Oheimb.de
Thu Jun 1 07:00:04 UTC 2023
> Probably could cut more if I put the DET (a specific IPv6 address)
> somehow into subject rather than SAN flagged critical.
Generally, removing X.509v3 extensions helps save space,
yet replacing a SAN with an IPv6 address by a subject DN entry
simulating the value, e.g., in the CN would be counterproductive
because the binary representation in the SAN is more efficient.
Here is an example (ab-)using OpenSSL test credential material:
openssl x509 -new -CA test/certs/server-ed25519-cert.pem \
-set_serial 2 -CAkey test/certs/server-ed25519-key.pem \
-force_pubkey test/certs/root-ed25519.pubkey.pem -subj / \
-extfile <(printf "subjectAltName = IP:2001:3F:FE3F:F805:A93E:53B7:2709:E0BA\n
subjectKeyIdentifier = none\n authorityKeyIdentifier = none") \
-days 365 -outform der | wc | awk '{ print $3 }'
226
openssl x509 -new -CA test/certs/server-ed25519-cert.pem \
-set_serial 2 -CAkey test/certs/server-ed25519-key.pem \
-force_pubkey test/certs/root-ed25519.pubkey.pem \
-subj "/CN=20013FFE3FF805A93E53B72709E0BA" \
-extfile <(printf "subjectKeyIdentifier = none\n authorityKeyIdentifier = none") \
-days 365 -outform der | wc | awk '{ print $3 }'
238
Unfortunately you cannot drop the rather inessential notBefore field,
and the coding restrictions in RFC 5280
disallow using a shortened (possibly even empty) string there.
If certificates could be transmitted/stored in efficiently compressed
(zipped) from,
theoretically one could save a couple of bytes by choosing as values
of low-entropy fields such as notBefore, notAfter, subject, and issuer
not only strings as short as possible, but also with a high portion of
repeated chars,
such as
Issuer: CN = 20010000000000efS
Not Before: Nov 11 11:11:11 2023 GMT
Not After : Nov 11 11:11:11 2025 GMT
David
On Wed, 2023-05-31 at 14:19 -0400, Robert Moskowitz wrote:
> Well, I got the DER down to 240 bytes by dropping all the
> constraints.
> Probably could cut more if I put the DET (a specific IPv6 address)
> somehow into subject rather than SAN flagged critical. For your
> review,
> this is what I have come up with. This will replace what I currently
> have in draft-moskowitz-drip-dki
>
> Use of this cert will rely on the DNS structure we will be creating
> for
> DRIP. For example to find the issuing cert, the CN below maps to a
> specific FQDN that any DRIP compliant implementation will know to
> find.
> And if this cert is not found in the matching ip6.arpa. fqdn it has
> been
> revoked. This cert is 2x the size of the DRIP specific RATS-styled
> Endorsement. Implementers will be able to choose their poison.
>
> Certificate:
> Data:
> Version: 3 (0x2)
> Serial Number: 160 (0xa0)
> Signature Algorithm: ED25519
> Issuer: CN = 2001003ffe3ff805S
> Validity
> Not Before: May 21 00:00:00 2023 GMT
> Not After : May 24 00:00:00 2023 GMT
> Subject:
> Subject Public Key Info:
> Public Key Algorithm: ED25519
> ED25519 Public-Key:
> pub:
> bf:04:53:a0:11:20:ed:8e:65:1a:e9:f6:95:1a:82:
> 78:3d:a8:20:29:6a:33:8e:ff:d5:4a:0b:a8:46:a9:
> 98:75
> X509v3 extensions:
> X509v3 Subject Alternative Name: critical
> IP Address:2001:3F:FE3F:F805:A93E:53B7:2709:E0BA
> Signature Algorithm: ED25519
> Signature Value:
> d1:cd:bb:64:03:9e:95:1a:8c:fa:eb:59:a6:65:ff:bc:0f:39:
> e4:4f:ac:81:cf:c5:13:1e:62:e3:f1:bd:84:46:9c:5f:7c:52:
> ff:bd:3e:f8:e7:d4:9d:8d:38:fe:70:62:f9:9c:10:f1:aa:b0:
> 46:c8:92:f9:9b:1a:09:d0:d6:0f
>
>
>
> On 5/31/23 13:36, Richard Levitte wrote:
> > The serial number is a defined field in the certificate structure.
> > It's not optional, so you can't get away from it.
> >
> > In ASN.1 terms, it's an INTEGER. In DER terms, the smallest
> > possible
> > INTEGER occupies 3 bytes (one for the tag, which is 02, one for the
> > length 01, and one value byte in the decimal range -128..127
> > (80..7F)).
> >
> > Without the serial number (just like without any other non-optional
> > field), whatever you happen to produce will not be a recognisable
> > X.509 certificate.
> >
> > That's it.
> >
> > Cheers,
> > Richard
> >
> >
> >
> > >
> > > Am 31. Mai 2023 15:41:02 MESZ schrieb Robert Moskowitz
> > > <rgm at htt-consult.com>:
> > >
> > > I tried putting in my conf:
> > >
> > > serial = none
> > >
> > > and that made an error.
> > >
> > > Best I have done is a serial of length 1 byte. But in my
> > > work, the subject or SAN provide uniqueness and CRLs will not be
> > > used. So want to see if I can create a cert with NO serial
> > > number.
> > >
> > > Thanks
> > >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mta.openssl.org/pipermail/openssl-users/attachments/20230601/83544cea/attachment.htm>
More information about the openssl-users
mailing list