【SSO单点系列】(10):CAS4.0 之 https证书

 

来源:

http://m.blog.csdn.net/zrk1000/article/details/51166603

http://blog.csdn.net/zhurhyme/article/details/24052951

http://blog.csdn.net/liu251890347/article/details/37698239

 

公司项目使用分布式部署,使用单点登录可使各节点无状态,达到业务与用户认证解耦;cas-server与cas-client通讯安全完全基于https,需要ssl证书,jdk的keytool工具生成的证书用于开发也是够的,当然正式上线的证书需要使用第三方认证的证书;这里介绍下cas开发的准备工作:keytool生成证书。

1、创建证书库

keytool -genkey -alias castest -keyalg RSA -keystore d:/cas/keystore

 

注意:-alias:别名,这里的castest 为别名; -keystore:指定证书库存放位置,这里存放到d:/cas目录下的keystore文件中,证书库不需要后缀名

生成证书

注意: 名字与姓氏要填域名,也就是指向部署cas服务的域名,这里必须填域名,不能填ip;没有域名的可以修改C:\Windows\System32\drivers\etc\hosts配置映射(推荐使用小工具SwitchHosts,记得使用管理员权限运行);组织单位名和组织名可以随便填写,国家输入ZH,输入的口令要记住。

2、导出证书:

从证书库中导出证书

keytool -export -file d:/cas/castest.crt -alias castest -keystore  d:/cas/keystore
  • 1

这里写图片描述

3、客户端JVM导入证书

cas的client端JVM导入证书,JVM证书库为%JAVA_HOME%/jre/lib/security/cacerts文件,

keytool -import -trustcacerts -alias castest -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file d:/cas/castest.crt -storepass changeit 

这里写图片描述

**注意: 
1、JVM证书库密码默认为changeit 
2、使用管理员运行cmd 
3、目录若有空格必须使用双引号 
可能会用到的命令: 
查看cacerts证书库中的证书列表,通过别名搜索 
keytool -list -v -keystore “%JAVA_HOME%/jre/lib/security/cacerts” -storepass changeit |findstr /i castest 
这里写图片描述 
删除证书库中的证书 
keytool -delete -alias castest -keystore “%JAVA_HOME%/jre/lib/security/cacerts” -storepass changeit

4、证书应用到web服务器-tomcat

cas的server服务端tomcat启用SSL,使用HTTPS加密协议。 
打开tomcat目录的conf/server.xml文件,开启87行左右的Connector标签的注释代码,并设置keystoreFile、keystorePass如下:

<Connector port="8443" protocol="HTTP/1.1"
       maxThreads="150"  SSLEnabled="true"  scheme="https"  secure="true"
       clientAuth="false" sslProtocol="TLS" keystoreFile="d:/cas/keystore"  keystorePass="caspass"/>

到此cas需要的SSL环境准备完毕

 

 

CAS取消https方法配置

详细配置修改如下:

1 、 WEB-INF/deployerConfigContext.xml

    在

    < bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"     p:httpClient-ref = "httpClient" />

增加参数 p:requireSecure="false" ,是否需要安全验证,即 HTTPS , false 为不采用 如下:

< bean class = "org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref = "httpClient" p:requireSecure= "false" />

      

2 、 WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml 
         修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie

如下部分:

    < bean id = "ticketGrantingTicketCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"

       p:cookieSecure = false "

       p:cookieMaxAge = "-1"

       p:cookieName = "CASTGC"

       p:cookiePath = "/cas" />

 

3 、 WEB-INF\spring-configuration\warnCookieGenerator.xml

修改 p:cookieSecure="true" 为 p:cookieSecure=" false " , 即不需要安全 cookie

结果如下:

    < bean id = "warnCookieGenerator" class = "org.jasig.cas.web.support.CookieRetrievingCookieGenerator"

       p:cookieSecure = false "

       p:cookieMaxAge = "-1"

       p:cookieName = "CASPRIVACY"

       p:cookiePath = "/cas" />

 

 

 

 

cas 用HTTPS方式访问 安全连接失败

原创 2014年07月11日 17:03:48

在cas server配置以HTTPS方式,客户端同样请求为HTTPS方式,在各个浏览器下出现错误,如下:

firefox:

chrome:

ie:

ie上看不到任何反应就不贴图了

 

导致以上结果的原因就是在客户端指定的server地址有问题,不应该指定server的应用端口 而是应该指定为SSL端口443或8443,如:

 

<filter>  
    <filter-name>CASFilter</filter-name>  
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
    <init-param>  
      <param-name>casServerLoginUrl</param-name>  
      <param-value>https://cas.my.com:8443/cas/login</param-value>  
    </init-param>  
    <init-param>  
      <param-name>serverName</param-name>  
      <param-value>http://cas.app1.com:8080</param-value>  
    </init-param>  
  </filter>  

 

 

posted @ 2018-01-02 16:14  打不死的小强hedgehog  阅读(660)  评论(0编辑  收藏  举报