我很难理解证书的序列号和它的 SHA1 哈希之间的区别。
MSDN 说:
序列号 唯一标识证书的编号,由证书颁发机构颁发。
那么我可以通过序列号来识别证书,对吗?
维基百科说哈希:
指纹:哈希本身,用作公钥证书的缩写形式。
因此,哈希标识(例如 RSA)密钥。
我目前对 Android 应用程序证书进行了一些研究,发现了一些有趣的证书:
[Issuer][Serial][SHA1 Hash][Valid From]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, E=android@android.com][00936EACBE07F201DF][BB84DE3EC423DDDE90C08AB3C5A828692089493C][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, E=android@android.com][00936EACBE07F201DF][6B44B6CC0B66A28AE444DA37E3DFC1E70A462EFA][Sun, 29 Feb 2008 01:33:46 GMT]
[C=US, L=Mountain View, S=California, O=Android, OU=Android, CN=Android, E=android@android.com][00936EACBE07F201DF][0B4BE1DB3AB39C9C3E861AEC1348110062D3BC1B][Sun, 29
还有很多共享相同的序列,但具有不同的哈希值。
那么可以有一个具有不同密钥的证书吗?在为 Android 应用程序创建证书时,实际上是谁在创建序列号?对于哈希很清楚,但是我可以创建一个与另一个证书具有相同序列号的新证书吗?
我可以确定具有相同序列号的证书是由同一个人创建的吗?