CAS Server部署指南

作者: Endzzz | 来源:发表于2016-04-08 11:30 被阅读3159次

    1 查看系统基本信息

    1.1 确认发行版

    登录到Linux服务器执行 lsb_release -a ,即可列出所有版本信息,例如:

    [root@3.5.5Biz-46 ~]# lsb_release -a 
    LSB Version: 1.3
    Distributor ID: RedHatEnterpriseAS
    Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 1)
    Release: 4
    Codename: NahantUpdate1
    

    1.2 生成证书

    keytool -genkey -keyalg RSA -dname CN=10.160.5.242 -ext san=ip:10.160.5.242 -alias sso_dtdream -keysize 1024 -validity 730 -keypass changeit -keystore /root/keystore
    

    注意密码用changeit

    1.3 导出证书

    keytool -export -alias sso_dtdream -keystore /root/keystore -file sso.crt
    

    1.4 确认Java版本和证书库的位置

    如下图所示,确认java的版本是1.8,证书库的位置是/etc/pki/java/cacerts



    1.5 确认tomcat已经正确安装

    如下图所示,说明tomcat已经正确安装,版本号为7.0,且已经正常启动和运行。


    1.6 其他准备

    需要如下文件:
    cas.war: CAS服务的所有文件,用来部署用的归档包。
    keystore: 用来存储证书私钥和公钥的证书库文件
    sso.crt: 用于在客户端验证CAS Server的CA证书(此处指自签名证书)

    2 服务器端部署

    2.1 配置证书库

    服务器端需要用证书库中的私钥来协商HTTPS通道,还要从证书库中取证书发送给客户端进行验证。这里需要将用到的证书库放到合适的位置。以CentOS7为例,我们需要先把keystore文件拷贝到一个可以访问的目录,这里拷贝到/var/lib/tomcat目录下,为了保证有访问权限,将owner和group都修改为tomcat:

    [root@iZ25gix959xZ ~]# cp keystore /var/lib/tomcat
    [root@iZ25gix959xZ ~]# chown tomcat /var/lib/tomcat/keystore
    [root@iZ25gix959xZ ~]# chgrp tomcat /var/lib/tomcat/keystore
    

    2.2 修改配置文件

    以CentOS中配置tomcat为例,修改/etc/tomcat/server.xml文件:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"           
          maxThreads="150" SSLEnabled="true" scheme="https" secure="true"           
          clientAuth="false" sslProtocol="TLS"
          keystoreFile="/var/lib/tomcat/keystore" keystorePass="changeit"
          truststoreFile="/usr/local/jdk1.8.0_45/jre/lib/security/cacerts"/>
    

    其中keyStoreFile中制定先前配置的证书库文件即可。

    2.3 启动服务

    将cas.war拷贝到tomcat的WEB服务目录下,如/var/lib/tomcat/webapp
    然后重启tomcat服务,以CentOS7为例:

    [root@iZ25gix959xZ ~]# service tomcat restart
    

    3 客户端部署

    3.1 导入Server端证书

    keytool -import -keystore "%JAVA_HOME%"\jre\lib\security\cacerts -file D:\server\ftp\sso_dtdream.crt -alias sso
    

    上述命令将证书导入到Java的证书库中,该证书主要用于验证CAS Server端发过来的证书,用于给CAS Client用的。 CAS Client主要包含在App Server中,本步骤只需要在APP server端来完成。

    3.2 修改配置文件

    APP server和CAS Server连接的时候会用HTTPS进行通信。以Tomcat为例,因为用来验证CAS Server服务器证书的证书库即为%JAVA_HOME%下的cacerts,不需要再做额外的配置,会自动去cacerts去取证书验证CAS Server。

    4 问题

    4.1 没有找到算法的错误

    显示信息如下:

    Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation
    

    可以继续向下看调用栈,可以看出原因应该是读证书库的时候出错了。

    解决方法:
    将truststoreFile="/usr/local/jdk1.8.0_45/jre/lib/security/cacerts" 修改为TruststoreFile="/etc/pki/java/cacerts"即可。推测原因是/usr/local/jdk1.8.0_45/jre/lib/security/cacerts这个目录,tomcat没有访问的权限。需要注意,/etc/pki/java/cacerts里面必须是一个可用的证书库,不能是空文件或者链接文件。

    4.2 访问/login/cas的时候提示404错误

    该错误一般出现在Spring4.0以前的版本,Spring4.0的版本上不会出现这个错误。
    需要在
    <bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter">
    中添加下面的属性:
    <property name="filterProcessesUrl" value="/login/cas " />

    相关文章

      网友评论

      • 我能更好:CAS必须要配置证书吗
        Endzzz:必须要部署的,因为要对外提供https服务,如果是http的话会一直提示不安全。

      本文标题:CAS Server部署指南

      本文链接:https://www.haomeiwen.com/subject/vjsvlttx.html