X.509证书的序列号

woo*_*roo 5 java security pki x509certificate x509

我正在java中为uni类编程一个证书颁发机构,现在我不知道什么是证书序列号的最佳选择.

  • 从0到veryBigNumber的简单静态计数器
  • 一些巨大的BigInt随机数

是否有任何理由选择其中一个......或者没有一个?

谢谢,

Jas*_*orn 2

我建议您使用随机数,但在数据库中保留这些颁发的序列号的列表。这将允许两件事。

  1. 您永远不会重新签发相同的序列号。
  2. 您可以从证书的序列号判断它是否远程有效。

当然,#1 要求您在生成时检查已知列表,并在发生冲突时生成新的随机数,而#2 在安全性或验证方面并没有多大意义,但仍然是一个有趣的前景。

  • “你可以从序列号看出它是否有效”是不正确的。证书的有效性需要进行大量检查,而序列号不是其中之一。它可能是您存储的证书列表的快速索引,但仅此而已。哈希也同样好。但它*当然*不会帮助客户端验证证书是否有效(或“远程”有效,无论这意味着什么)。 (4认同)
  • 我确实读过,并且同意。但有点奇怪的是,在推荐随机数之后,您描述的好处实际上与随机数无关 - 它们同样适用于序列号的使用。在安全协议中,当从零开始的序列足够时,传统上使用术语“序列号”;当通过使用随机数获得安全优势时,通常使用术语“随机数”。我发现很多人(尤其是学生)很容易对 PKI 产生错误的印象,因此值得利用任何机会予以澄清。问候。 (2认同)