我在 java keystores和keytool上有以下问题.我假设密钥库可能有多个证书.正如我所尝试的那样,通过keytool我可以创建一个密钥库,并且要访问这个密钥库,我必须设置密码.另外,要访问每个证书条目,我必须设置密码.是否必须为密钥库和条目使用相同的密码?如果不是(我认为这样做是合理的)为什么以下代码:
char[] pwd = new char[]{'s','e','c','r','t'};
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream("myPersonal.keystore"),pwd);
kmf.init(ks,pwd);//fails here with exception

给我以下例外?

Exception in thread "main" java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(UnkNown Source)
    at sun.security.provider.JavaKeyStore.engineGetKey(UnkNown Source)
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(UnkNown Source)
    at java.security.KeyStore.getKey(UnkNown Source)

secret是访问我通过keytool创建的密钥库myPersonal.keystore的密码.其中有2个条目,用于证书,1个DSA和1个RSA.每个密码库都有不同的密码(和彼此).现在代码是正确的,因为如果我使用一个密钥库,其中一个证书条目具有与密钥库相同的密码,则没有异常,程序运行正常.

那么这里的问题是什么?我不应该有不同的密码?我不应该有很多证书?或者是什么?

解决方法

根据API的规定,KeyManagerFactory.init方法接受用于从密钥库中检索密钥的密​​码.由于只有一个密码参数,因此期望所有密钥的密码相同.如果其中一个密钥使用了不同的密码,那么您将看到由于该特定密钥库条目的密码不正确而看到的错误.

最简单的解决方案是对密钥库中的所有条目使用相同的密码.如果您设置为每个条目维护不同的密码,那么您可能需要考虑构建自己的自定义安全元素,例如KeyManager.

java密钥库和密码设置的更多相关文章

  1. 如何使用Android中的Keytool为W7 32bit生成Keyhash(Facebook)

    name=openssl-0.9.8k_WIN32.zip.然后解压缩文件并运行以下命令:DON是我的系统名称,应替换为您的系统名称.

  2. android – “错误版本的密钥库”错误.如何创建version = 1密钥库证书?

    =0){thrownewIOException;}}Blockquote在这种情况下,STORE_VERSION=1,我的版本=3基于读取我创建的密钥库所持有的证书的详细信息.我不知道如何生成包含version=1证书的密钥库.我觉得这个答案很有帮助:wrongversionkeystorewhendoinghttpscall但是它要求使用以下参数创建密钥库:-storetypeBKS-providerorg.bouncycastle.jce.provider.BouncyCastleProvider-p

  3. Android开发:Keytool,创建一个密钥库?

    我试图准备我的应用程序为谷歌市场,但它是比预期更具挑战性.我似乎无法掌握签名应用程序的整个概念,但更具体地说,我的问题是我已经安装了eclipse的keytool插件,但是当我想创建一个证书时,它要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该作为一个文件输入什么,因为它实际上希望我通过浏览选择文件,并且如何继续导出该文件,Google遗憾的是没有想出非常好或明确的答案解决方法您需要

  4. java密钥库和密码设置

    我在javakeystores和keytool上有以下问题.我假设密钥库可能有多个证书.正如我所尝试的那样,通过keytool我可以创建一个密钥库,并且要访问这个密钥库,我必须设置密码.另外,要访问每个证书条目,我必须设置密码.是否必须为密钥库和条目使用相同的密码?

  5. 通过CLI验证针对Java证书存储的证书

    如何通过命令行对Java证书存储区验证X509证书?我已经研究过使用keytool实用程序,但看起来它只处理导入/导出/显示功能.编辑:看起来好像keytool可以用于验证,但只有在尝试导入时才能使用.我想更好的问一个问题的方法是,是否有更加被动的方法.谢谢!

  6. Cocos2d-JS连载之环境搭建遇到的问题及android打包过程中遇到的问题

    进入到java的bin目录javabin目录为的是能使用keytool这个命令,因为keytool.exe在此目录下keytool.exe目录输入命令其中-alias比较重要,因为我第一次生成的感觉有问题就删除了旧的android.keystore重新生成,这个参数必须一致。-keyalg加密方式-validity是从当前时间开始的有效的天数。这里必须注意windows的路径。这个其实是错误的,windows的路径\必需是\\或者/. 只要到对应项目的frameworks\runtime-src\proj

  7. java – keytool错误bash:keytool:命令未找到

    我试图从Javabin目录执行keytool,但是我发现一个错误,警告bash:keytool:commandnotfound.解决方法这些是解决我的问题的步骤:>搜索我的java安装路径>移动到java目录>使用keytool命令创建ssl证书

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部