目前在研究cas sso相关的搭建知识。开始便是关于HTTPS安全证书的一些问题,简单说一下本文的目的:安全证书的生成,jdk导入安全证书。

先说自己定义的域名


编辑文件 C:\Windows\System32\drivers\etc\hosts 在文件末端添加下面的信息:





java 拿取ssl证书 java导入https证书_根目录



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 指定证书的位置


java 拿取ssl证书 java导入https证书_根目录_02


【注意】:第一个让你输入的“您的名字与姓氏是什么”,请必须输入在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的证书密码要与上面输入的密码一致.



java 拿取ssl证书 java导入https证书_SSO_03



java 拿取ssl证书 java导入https证书_JAVA_04


补充一下:这一步可能出现的权限问题如下图:




java 拿取ssl证书 java导入https证书_SSO_05


这个很简单,只要在所需要写入的磁盘中增加访问


java 拿取ssl证书 java导入https证书_根目录_06



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的安装路径


上图:



java 拿取ssl证书 java导入https证书_CAS_07


第一个红色框是我进入的JDK目录第二个我没有加""报的错,第三个是我正确输入路径之后展示的效果就是正确的



接下来输入密码changeit这是默认额的密码建议不要修改,不是输入上面的keypass密码啊,不要弄错了。



java 拿取ssl证书 java导入https证书_SSO_08


紧接着输入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