欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ca粗略配置 博客分类: Struts2&Webwork2Jsp/Servlet 应用服务器

程序员文章站 2024-02-04 22:30:16
...

 


今天花了一个下午的时间,终于完成的cas配置的一次完整的运行。cas前世今生我就不介绍了,有兴趣的朋友谷歌或是百度一下就可以有很详细的了解了,重点记录一下今天的配置过程和遇到的问题及解决方法。
环境:浏览器(ie6.0,windows xp)
    cas server 在一台Linux服务器,cas client在另外一台linux服务器
    应用服务器为tomcat5.5.26
初步的配置实用过程参考了http://www.blogjava.net/yida/archive/2007/04/03/55466.html的描述,各位亦可以访问阿木的blog。整理如下:
1.请下载到cas的官方网站下载cas-server(我用的是3.2)和cas-client(2.0.11),tomcat5.5.26
    cas的官方网站:http://www.ja-sig.org/products/cas/
2.安装cas-server,我们假定安装cas-server的服务器为server1
    (1)请在server1服务器上安装好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置环境变量JAVA_HOME
    (2)将cas-server-3.2-release.zip解压,将moudels目录下cas-server-webapp-3.2.war拷贝到tomcat的webapps目录下,修        改名称为cas.war.
    (3)生成server1的安全证书:
       
keytool -genkey -alias my-alias-name -keyalg RSA -keystore keystore-file
       (4)在server1
配置https
             在
$CATALINA_HOME/conf/server.xml里修改为一下配置
              <Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="/path/keystore-file" keystorePass="your-password"
              />
          (5)导出server1的证书,
用来给所有需要用到的客户端导入
                
keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file
          
(6)将导出的证书上传的client1服务器上。
          (7)启动server1上的tomcat,检验cas配置是否成功,访问http://ip:8443/cas/login,如果能看到cas的登录页面则表示配                置成功。
3.配置 cas-client,我们以tomcat下自带的servlet-example为例子进行说明 
    (1)
请在client1服务器上安装好jdk1.5或以上版本的jdk,tomcat5.5.26,并配置环境变量JAVA_HOME
  (2)
将cas-client-2.0.11.zip解压,把java/lib/casclient.jar拷贝到client1服务器上的
            webapps/servlets-examples/WEB-INF/lib目录下(如果没有就建一个)

  (3)在要使用CAS的客户端client1里设置(以servlets-examples这个APP为例),我们使用ServletFilter(CAS client里提供            的)来实现SSO的检查,修改servlets-examples/WEB-INF/web.xml,添加以下内容:
          <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://your.cas.server.name(eg:server1):port/cas/login</param-value>
                </init-param>
                <init-param>
                    <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
                    <param-value>https://your.cas.server.name(eg:server1):port/cas/proxyValidate</param-value>
                </init-param>
                <init-param>
                    <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
                    <param-value>your.client.server.name(eg:client1):port</param-value>
                </init-param>
            </filter>
            <filter-mapping>
                <filter-name>CASFilter</filter-name>
                    <url-pattern>/servlet/*</url-pattern>
            </filter-mapping>
       (4)
在客户端的JVM里导入信任的SERVER的证书(根据情况有可能需要管理员权限)
             
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name
             此时需要输入密码,默认密码为changeit
通过以上配置,基本完成cas-server和cas-client的配置,但是还有以下问题需要注意和解决
由于cas的证书需要域名才能正确的进行认证信息的交互,不支持ip,如果server和client在同一台机器上,可以使用localhost,如果像我们上面描述的三台服务器这样的环境,使用localhost或者ip是不能正常运行的。如果使用ip,运行时会抛出
 HTTPS hostname wrong 的错误,解决的方法如下:
假设server1的ip为:192.168.10.1,client1的ip为192.168.10.2,开发机器(xp)的ip为:192.168.10.3
在server1和client1上设置本机的域名映射:
vi /etc/hosts 添加以下行
192.168.10.1 cas.server
在开发机器(xp)下,在C:\WINDOWS\system32\drivers\etc目录下,编辑hosts文件,添加以下行
192.168.10.1 cas.server

重新生成cas-sever的服务器端的证书,在开始问“你的名字”或“DName”的时候,必须填写你服务器所在域名(cas.server)
然后重新到处服务器器端的证书,并将其导入到client1服务器的jvm

最后修改
修改servlets-examples/WEB-INF/web.xml中关于cas过滤器的配置:请将your.cas.server.name(eg:server1)修改为cas.server即可。重新启动server1和client1的服务器上的tomcat就可正常运行。


ttp://client1:8080/servlets-examples/servlet/HelloWorldExample
系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,严正通过之后就会访问
到真正的HelloWorldExample这个servlet了

相关标签: 应用服务器