在第二步中,服务器提供它的服务器证书。这个证书由官方认证机构(CA、根CA)如Baltimore Cypertrust、Entrust、DigiCert、Verisign等颁发和签名,或者由中间认证机构(ICA)颁发和签名的ICA证书。
在CA/ICA颁发证书之前,它会验证请求者(也称为主体)的身份,确保该人或公司是真正的本人,并且拥有应颁发证书的域名。
这建立了所谓的信任链,从服务器证书向后追溯到可信任的机构。
在第三步中,验证第2步的证书是否导向已知的CA/ICA。如果是,则接受证书作为可信任的。为此,Java提供了一个存储所有有效根和中间证书的证书库。
要列出其内容,请打开命令窗口,切换到文件夹
.../jre1.x.y_zzz/lib/security/
并输入命令
../../bin/keytool.exe -keystore cacerts -list
。可以通过按回车键跳过密码输入的问题。然后您将获得存储在默认存储中的所有证书的列表。
dude@cs04n4 /cygdrive/c/Program Files/Java/jre1.8.0_301/lib/security
$ ../../bin/keytool.exe -keystore cacerts -list
Keystore-Kennwort eingeben:
***************** WARNING WARNING WARNING *****************
* Die Integrität der Informationen, die in Ihrem Keystore gespeichert sind, *
* wurde NICHT geprüft. Um die Integrität zu prüfen, *
* müssen Sie Ihr Keystore-Kennwort angeben. *
***************** WARNING WARNING WARNING *****************
Keystore-Typ: JKS
Keystore-Provider: SUN
Keystore enth▒lt 92 Eintr▒ge
sslrooteccca [jdk], 31.07.2020, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 34:17:BB:06:CC:60:07:DA:1B:96:1C:92:0B:8A:B4:CE:3F:AD:82:0E:4A:A3:0B:9A:CB:C4:A7:4E:BD:CE:BC:65
digicertassuredidg3 [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 7E:37:CB:8B:4C:47:09:0C:AB:36:55:1B:A6:F4:5D:B8:40:68:0F:BA:16:6A:95:2D:B1:00:71:7F:43:05:3F:C2
verisignuniversalrootca [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 23:99:56:11:27:A5:71:25:DE:8C:EF:EA:61:0D:DF:2F:A0:78:B5:C8:06:7F:4E:82:82:90:BF:B8:60:E8:4B:3C
digicerttrustedrootg4 [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 55:2F:7B:DC:F1:A7:AF:9E:6C:E6:72:01:7F:4F:12:AB:F7:72:40:C7:8E:76:1A:C2:03:D1:D9:D2:0A:C8:99:88
...
ttelesecglobalrootclass2ca [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 91:E2:F5:78:8D:58:10:EB:A7:BA:58:73:7D:E1:54:8A:8E:CA:CD:01:45:98:BC:0B:14:3E:04:1B:17:05:25:52
addtrustqualifiedca [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 80:95:21:08:05:DB:4B:BC:35:5E:44:28:D8:FD:6E:C2:CD:E3:AB:5F:B9:7A:99:42:98:8E:B8:F4:DC:D0:60:16
digicertglobalrootca [jdk], 25.08.2016, trustedCertEntry,
Zertifikat-Fingerprint (SHA-256): 43:48:A0:E9:44:4C:78:CB:26:5E:05:8D:5E:89:44:B4:D8:4F:96:62:BD:26:DB:25:7F:89:34:A4:43:C7:01:61
dude@cs04n4 /cygdrive/c/Program Files/Java/jre1.8.0_301/lib/security
设置SSL连接时,您可以选择使用默认信任存储区或使用自己的信任存储区。如果您决定使用自己的信任存储区,则必须创建并导入您信任的服务器/根证书。