生成证书
证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了
JDK自带的证书生成工具keytool。当然在实际项目中你可以到专门的证书认证中心购买证书。
中文官方网站:http://www.verisign.com/cn/
1、用JDK自带的keytool生成证书
命令:keytool -genkey -alias smalllove -keyalg RSA -keystore D:/keys/smallkey
c此命令是生成一个证书,其中 smalllove 是证书别名
此命令的执行如图所示:
其中名字与姓氏这一最好写你的 域名,在C:\Windows\System32\drivers\etc\hosts文件中映射一个虚拟域名,127.0.0.1 sso..com
注意不要写IP。
2、导出证书 cop
命令:C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey
如图:
密码为上步设置的密码。
3、把证书导入到客户端JDK中。
命令:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
命令:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
此命令是把证书导入到JDK中。
如图:
到此证书导入成功。
可能出现的错误:
-
C:\>keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
-
输入keystore密码:
-
keytool错误: java.io.IOException: Keystore was tampered with, or password was incorrect
解决方法是,把%JAVA_HOME%\lib\security下的cacerts文件删除掉,在执行。
常见命令:
1.显示证书库中的证书使用如下命令:
keytool -list -keystore C:\Program Files\Java\jdk1.6.0\jre\lib\security\cacerts
2.删除tomcat 别名的证书
keytool -delete -alias tomcat -keystore C:\Program Files\Java\jdk1.6.0\jre\lib\security\cacerts
3.显示证书库中的证书使用如下命令: keytool -list -keystore D:/keystore/test 将显示 D:/keystore/test 证书库的的所有证书列表:
将证书导出到证书文件
4.使用命令:keytool -export -alias Tomcat -file D:/keystore/TC.cer -keystore D:/keystore/test
将把证书库D:/keystore/test 中的别名为 Tomcat 的证书导出到 TC.cer 证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。
导出的证书文件是以二进制编码文件,无法用文本编辑器正确显示,可以加上 -rfc参数以一种可打印的编者编码输出。 如:
keytool -export -alias Tomcat -file D:/keystore/TC.cer -keystore D:/keystore/test –rfc
5.通过证书文件查看证书的信息
通过命令: keytool -printcert -file D:/keystore/TC.cer 可以查看证书文件的信息。 也可以在 Windows 资源管理器中双击产生的证书文件直接查看。
6.证书条目的删除keytool的命令行参数 -delete 可以删除密钥库中的条目,如: keytool -delete -alias Tomcat -keystore D:/keystore/test,这条命令将 D:/keystore/test 库中的 Tomcat 这一条证书删除了。
7.证书条目口令的修改使用 -keypasswd 参数,如:keytool -keypasswd -alias Tomcat -keystore D:/keystore/test,可以以交互的方式修改 D:/keystore/test 证书库中的条目为 Tomcat 的证书。
Keytool -keypasswd -alias Tomcat -keypass oldpasswd -new newpasswd -storepass storepasswd -keystore D:/keystore/test 这一行命令以非交互式的方式修改库中别名为 Tomcat 的证书的密码为新密码 newpasswd,行中的 oldpasswd 是指该条证书的原密码, storepasswd 是指证书库的密码。