登陆Linux,我用的是SecureCRT客户端。
注:这个的bin用绝对路径是因为那台机子是另外一个部门的,我们无法更改它的配置(默认是jdk1.4)。这儿还有一点,在生成服务端密钥时,你输入的姓名必须填写你机器名称或者该机器ip对应的域名。我们这儿使用的是mmis-sso,后面在开发人员客户端配置的时候会用到mmis-sso。
注:keystoreFile和truststoreFile就是上面刚刚生成的文件,.keystore文件默认生成在登陆用户目录下。
服务端配置完成,来看看客户端的配置(这儿客户端是指每个程序员自己开发测试的tomcat)。在IE中访问https://mmis-sso:8443/可以导出服务端的证书,存为d:/tomcatserver.cer,在windows下执行:
完了在d盘下生成
tomcatclient文件。
在项目的web.xml中配置:
一个基本的单点登陆已经完成,你访问本地web,会自动跳转到单点登陆服务的登陆页面。我一个人配了3天才弄完,2个异常比较常见:
我用的CAS是JA-SIG Central Authentication Service,包自己去网站上可以下载的。
首先生成服务端密匙和证书:
- /*生成服务端密匙*/
- /home/weblogic/sso_cas/jdk1.6.0_10/bin/keytool -genkey -alias tomcatserver -keyalg RSA -keypass changeit -storepass changeit -keystore tomcatserver.keystore
- /*生成服务端证书*/
- /home/weblogic/sso_cas/jdk1.6.0_10/bin/keytool -export -alias tomcatserver -storepass changeit -file tomcatserver.cer -keystore tomcatserver.keystore
- /*导入证书文件到cacerts 文件中*/
- /home/weblogic/sso_cas/jdk1.6.0_10/bin/keytool -import -trustcacerts -alias tomcatserver -file tomcatserver.cer -keystore /home/weblogic/sso_cas/jdk1.6.0_10/jre/lib/security/tomcatserver -storepass changeit
生成文件完成之后,向tomcat的server.xml添加如下代码:
- <Connector protocol="HTTP/1.1"
- port="8443" minSpareThreads="5" maxSpareThreads="75"
- enableLookups="true" disableUploadTimeout="true"
- acceptCount="100" maxThreads="200"
- scheme="https" secure="true" SSLEnabled="true"
- keystoreFile="/home/weblogic/tomcatserver.keystore" keystorePass="changeit"
- truststoreFile="/home/weblogic/sso_cas/jdk1.6.0_10/jre/lib/security/tomcatserver"
- clientAuth="false" sslProtocol="TLS"/>
启动tomcat6.0(/home/weblogic/sso_cas/tomcat6.0/bin/./startup.sh),在IE中输入:https://mmis-sso:8443/,如果配置成功,会显示tomcat的默认页面。这儿mmis-sso需要在window的C:/WINDOWS/system32/drivers/etc/hosts文件中配置:
- 172.20.4.145 mmis-sso
- keytool -import -trustcacerts -file d:/tomcatserver.cer -keystore tomcatclient -storepass changeit
然后配置System的参数,这儿方法很多,根据自己的项目来进行不同的配置,我这儿是在ServletListener中设置的:
- public void contextInitialized(ServletContextEvent event) {
- System.setProperty("javax.net.ssl.trustStore", "d:/tomcatclient");
- System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
- }
- <filter>
- <filter-name>CASFilter</filter-name>
- <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
- <init-param>
- <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
- <param-value>https://mmis-sso:8443/sso/login</param-value>
- </init-param>
- <init-param>
- <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
- <param-value>https://mmis-sso:8443/sso/serviceValidate</param-value>
- </init-param>
- <init-param>
- <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
- <param-value>localhost:8080</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>CASFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error:
- Java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
- javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
- PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
- unable to find valid certification path to requested target
有一个奇怪的现象就是,我这儿用tomcat的插件启动tomcat,sso没法使用,必须使用startup.bat。