目前在研究cas sso相关的搭建知识。开始便是关于HTTPS安全证书的一些问题,简单说一下本文的目的:安全证书的生成,jdk导入安全证书。
先说自己定义的域名
编辑文件 C:\Windows\System32\drivers\etc\hosts 在文件末端添加下面的信息:
1:win+R 快捷键打开DOS命令窗口
2:输入以下命令,生成证书
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass ywj123 -validity 365 -keystore G:\ywj_cas.keystore -storepass ywj123
解释一下:
-alias后面的 ssodemo 是我生成证书的别名 ,
-keypass ywj123是我要生成证书的密码,
-storepass ywj123要与上面的-keypass密码相同
-keystore G:\ywj_cas.keystore 指定证书的位置
【注意】:第一个让你输入的“您的名字与姓氏是什么”,请必须输入在C:\Windows\System32\drivers\etc\hosts文件中加入的服务端的域名。
我这里也就是server.ywj123.com,为何这么做?
首先cas只能通过域名来访问,不能通过ip访问,同时上方是生成证书,所以要求比较严格,所以如果不这么做的话,及时最终按照教程配置完成,cas也可以正常访问,访问一个客户端应用虽然能进入cas验证首页,但是,当输入信息正确后,cas在回调转入你想访问的客户端应用的时候,会出现No subject alternative names present错误异常信息,这个错误也就是在上面输入的第一个问题答案不是域名导致、或者与hosts文件配置的不一致导致
3:导出证书
在cmd窗口继续输入以下命令,导出证书:
keytool -export -alias ssodemo -keystore G:\ywj_cas.keystore -file G:\ssodemo.crt -storepass ywj123
ywj_cas.keystore,-file后面才crt路径,我也指定在G盘根目录. –storepass的证书密码要与上面输入的密码一致.
补充一下:这一步可能出现的权限问题如下图:
这个很简单,只要在所需要写入的磁盘中增加访问
4:JDK导入证书
由于是本地没有证书,证书是自己生成的,所以,务必将生成的证书导入到jre的证书链中,不然是无法支持CAS认证服务的。
在cmd窗口输入命令:
keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file G:\ssodemo.crt -alias ssodemo
%JAVA_HOME%这个路径你是在自己系统环境变量中配置好的jdk路径的,其次一定要主要双""别忘记加了。我就是在这里采坑的,另外还有就是输入这行命令的前提路径是进入你的cd G:\ProgramFiles\Java\jdk1.7.0_17\jre\lib\security这个jdk的安装路径
上图:
第一个红色框是我进入的JDK目录第二个我没有加""报的错,第三个是我正确输入路径之后展示的效果就是正确的
接下来输入密码changeit这是默认额的密码建议不要修改,不是输入上面的keypass密码啊,不要弄错了。
紧接着输入y便可JDK导入安全证书成功。
本人借鉴此篇博客加以补充自己踩过的坑,介绍的会更加详细,后面我会把自己真的项目的部署过程公开给大家学习。
附常用命令:
//查看cacerts中的证书列表:
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
//删除cacerts中指定名称的证书:
keytool -delete -alias ssodemo -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
//导入指定证书到cacerts:
keytool -import -alias ssodemo -file ssodemo.cer -keystore"%JAVA_HOME%/jre/lib/security/cacerts" -storepasschangeit-trustcacerts