我正在为大学课程编写一个Java证书颁发机构,现在我不知道证书序列号的最佳选项是什么。
- 简单的静态计数器从0到非常大的数字
- 一些巨大的BigInt随机数
选择其中一个有没有任何好的理由...或者都不选?
谢谢!
我正在为大学课程编写一个Java证书颁发机构,现在我不知道证书序列号的最佳选项是什么。
选择其中一个有没有任何好的理由...或者都不选?
谢谢!
从技术上讲,从0计数到非常大的数字比生成一个大的随机数容易实现 - 因为序列号必须不同。
然而,如果你关心人们知道你发行了多少个证书,就不应该使用简单的计数器。
这取决于您使用序列号的目的。如果您是一家小公司,并且计划为每个客户提供一个证书,那么您的序列号将显示您有多少客户。
除此之外,我不认为序列号不应该是连续的有任何理由。有些人认为使用序列号会向潜在攻击者透露一些信息(下一个序列号),但我认为这不是一个大问题。
(发行者区分名称,序列号)
在整个宇宙中应该是唯一的。因此,除非随机数非常大以至于重复的概率可以忽略不计,否则不应使用随机数。20字节的随机数应该足够了。如果您不介意其他人知道您发行了多少证书,那么简单的计数器就可以完全胜任。我认为如果我们仔细研究“串行”这个词,答案就会隐含在其中……串行、系列、进展等等。