因为最近在搭建cas服务,遇到了一些问题,在网上查了一下资料,问题解决了,记录一下这些信息:
cas sso配置大致步骤:
1.生成服务器证书;
keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
2.导出证书命令
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit
3.证书导入JDK的信任证书库中
keytool -import -trustcacerts -alias tomcat -file server.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
4.修改tomcat的配置文件 /conf/server.xml (/为tomcat根目录)
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="D:\apache-tomcat-7.0.14\server.keystore"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
访问https://localhost:8443/出现安全证书问题就说明配置成功了。
sso解决方案遇到的问题:
1.生成证书时填写名字和姓氏时要填 localhost 或者是自己的计算机名。
2.按照 keytool -genkey -alias sjc -keyalg RSA -keystore c:/store/mykey来生成证书时必须先创建c:/store文件夹,否则不能生成证书。
3.导入JDK的信任证书库中时,如果JDK安装在Program Files下,cmd命令就会返回不能找到 Files ...文件,看了下网上的说法,都说要在路径名上加引号,为了保险起见,我还是重装了一下JDK,反正就一会的事。
4.JDK的信任证书库的路径是是JAVA_HOME的jre目录下,而不是跟JDK同级的jre目录下的。
5.按照keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc来导入JDK中时,密码是默认的changeit,而不是之前设置的密码。
6.最后的问题,也是最大的问题,前面的证书生成、导出、导入都已经完成之后,还是不能打开https://localhost:8443/。 参照网上的做法,
a.查看Host文件,c:\windows\system32\drivers\etc\hosts,打开hosts这个文件,看看127.0.0.1和localhost是不是在一行;
b.查看局域网设置,是否用了代理服务器上网,选中“对于本地址不使用代理服务器”。
我一一试了,发现都是无用的,这两种设置本来就都是符合的。
后来我又查看了tomcat的日志信息,发现端口8080和8009都是正常的,而新释放的端口8443产生了错误信息:
Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"] ...
又搜索了一下,很多关于8080端口被占用的问题也会报出这种错误,那只需要改一下端口号就行了,可是我这8443端口不大可能被占用吧。
接着搜索,最后终于发现了有牛人说要把server.xml中的下面一段注销掉,不然就会报出上面的错误:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
注销,重启tomcat,打开https://localhost:8443/,搞定。
文章转自:http://www.cnblogs.com/hamfy/archive/2012/07/31/2616805.html