无法将.p12证书导入cacerts

Mri*_*jee 3 java authentication jks keytool pkcs#12

导入.p12cacerts我面临以下问题.第一行说别名已经存在,然后当我尝试覆盖它时说别名找不到.请帮我解决这个问题.

/usr/java/default/jre/bin/keytool -importkeystore -deststorepass changeit -destkeystore     /usr/java/default/jre/lib/security/cacerts -srckeystore /home/sogadm/MB_copy/MB_client.p12 -srcstoretype pkcs12 -srcstorepass 123456 -alias mb_ca
Existing entry alias mb_ca exists, overwrite? [no]:  yes
keytool error: java.lang.Exception: Alias <mb_ca> does not exist
Run Code Online (Sandbox Code Playgroud)

Ser*_*lin 6

这可能意味着:

  1. cacerts已经有一个别名mb_ca的条目
  2. .p12没有别名mb_ca的条目

尝试执行以下操作:

  1. -list看的现有条目.p12及其别名.适应你的例子,它将是这样的: keytool -list -keystore /home/sogadm/MB_copy/MB_client.p12 -storepass 123456 -storetype PKCS12 -v

  2. -delete现有的mb_ca条目cacerts,如果是错误的,或者你不需要它

  3. 使用-srcalias-destalias更好地控制

实际上,如果cacerts是受信任的证书存储区,则不应从其中导入私钥条目.p12.首先导出公钥,然后将其导入cacerts:

keytool -exportcert -keystore /home/sogadm/MB_copy/MB_client.p12 -storepass 123456 -storetype PKCS12 -alias p12_entry_alias -file /home/sogadm/MB_copy/MB_client.cer

keytool -importcert -keystore /usr/java/default/jre/lib/security/cacerts -storepass changeit -alias mb_client -file /home/sogadm/MB_copy/MB_client.cer
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 这应该有效 `keytool -list -keystore your_p12_file.p12 -storepass p12_password -storetype PKCS12 -v` (2认同)
  • 顺便说一下,你试图将`.p12`导入`cacerts`.`p.12`是具有一个私钥条目的密钥库.`cacerts`是受信任证书库的通常名称.通常,您不应混用这两种条目.要导入`p.12`条目的公钥,首先导出它,然后导入`cacerts`.我会将命令添加到答案中. (2认同)