欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Keystore概念,Keytool工具使用 博客分类: Java JDKSecurity 

程序员文章站 2024-03-24 17:53:46
...

近来由于项目需要做Single Sign On, 研究了一下CAS (具体配置等下篇再介绍), 而这个CAS 的配置最关键的不是CAS 本身,而是数字证书,如何配置多台服务器之间的信任链接。因此,有必要把keystore, keytool 的东西翻出来晒晒。

几个概念

keystore
是 一个密码保护的文件,用来存储密钥和证书(也就是说,keystore 中存储的有两类型entries );这个文件(默认的)位于你的home 目录,也就 是你登录到操作系统的用户名的那个目录。或者通过-keystore 参数设为你指定的位置。需要说明的是:如果不通过-keystore 来指定位置,将使 用home 目录中的默认keystore 文件。smilingleo 原创

通过-alias 来检索keystore 中的具体内容(keystore 中可能存有多个entry

如果想查看keystore 中每个entry 的详细信息,比如谁签发的,用-v 参数(verbose ),里面你还可以看到默认的有效期。

系统签署的证书其有效期默认为一年,通过-validity 来设定其具体的天数。

重要 JDK\jre \lib\security 目录下面有一个cacerts 的文件,就是一个keystore ,其默认密码是changeit 。如果一个App Server 想建立一个安全的链接到另外一个Server, 需要通过一个受信的数字证书,而这个证书就需要存储在cacerts 中。

keytool
用来import, export, list keystore 中内容的工具,还可以用来以测试为目的,生成自己签署的证书。

了解了上面的概念之后,你操作起来就比较容易,比如我们想从一个keystore (文件存在home 目录的.keystore 文件)中删除某个entry , 其aliastomcat5 ,那么keytool 命令就是:
keytool -keystore .keystore -delete -alias tomcat5
是不是很自然?

理解:签署
服务器上产生一个证书之后,用这个证书签署Applet 等,以表明这个applet 确实是来源于这个服务器,而不是其他,以实现其真实性,如果你信任服务器,那么你就可以信任这个applet

比如你可以通过jarsigner 工具,用keystore 中的某个key entry 来签署一个jar 文件。

相关标签: JDK Security