2014-10-08 81 views
0

我正在配置一个java客户端,以便它可以连接到https服务。该服务位于实验环境中,因此不提供签名证书,我需要将其导入java密钥库以使其正常工作。使用keytool导入到Java密钥存储库后更改了站点证书序列号

在浏览器中,我检查了证书和序列号是一样的东西:

‎ca d0 fa e6 4d c2 2b 16 60 88 51 fb e4 e3 2a 1f 

我下载了这个证书,并导入到密钥库,但如果我再检查序列号,使用keytool实用程序命令:

keytool -list -v -keystore cacerts 

序号变更为:

-352f0519b23dd4e99f77ae041b1cd5e1 

但是,MD5和teh SHA1 /指纹是相同的,那么为什么序列号会改变?可能由于这种不匹配,我无法连接到服务器?

我引用这个链接问题分流: http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html

回答

2

这仅仅是一个无符号整数作为符号整数的不实陈述。序列号本身是相同的。您可能会看到这样更好,如果你写的正面部分为二进制

11001010110100001111101011100110010011011100001000101011000101100110000010001000010100011111101111100100111000110010101000011111 
00110101001011110000010100011001101100100011110111010100111010011001111101110111101011100000010000011011000111001101010111100001 

第二行(0x352f0519b23dd4e99f77ae041b1cd5e1)是原始序列号SN = 0xcad0fae64dc22b16608851fbe4e32a1f的Two's complement,这是所有位翻转并加1。因此,Java实际上显示了相同的数字,但是作为一个有符号值(SN == -(-SN)

+0

感谢您的回答,是的,我看到该数字被视为有符号数字,并且它使用负数的二进制补码。 – 2014-10-08 21:47:13

相关问题