CAS客户端和服务器配置https证书

关于如何生成https证书可以看这篇文章:

java生成Https证书,及证书导入的步骤和过程

 下面整理cas如何整合https:

cas服务器端部署(TLS[https])

1.生成证书:

参照java生成Https证书,及证书导入的步骤和过程

导出该证书,是为了给客户端使用。

2.修改服务器端的 127.0.0.1为域名

修改域名的文件在:C:\WINDOWS\system32\drivers\etc\ hosts

以下是一个example,这里我们修改域名为【sso.wsria.com】:

127.0.0.1       sso.wsria.com

3.修改cas\WEB-INF\deployerConfigContext.xml

修改dataSource标签,配置数据源。

注:本例中我们是以oracle为例,lib中也只有oracle的驱动,如果想配置其他数据库,不但需要配置该数据源还需要把相应的驱动jar包放到lib中。

客户端配置(TLS[https])

1.修改客户端的 127.0.0.1 为域名,修改方式与服务器端一致,但是域名不能与服务器端相同,因为服务器端为sso.wsria.com,那么我们配置本地的域名为sso.wsria.cn。

2.导入证书

该证书指的是,刚刚从服务器段导出的证书。

没有特殊要求的话,一般将该证书导入到 系统环境变量中 指定的jdk中,如果Tomcat指定了jdk,那么将证书导入到指定的jdk中。

keytool -import -keystore C:\Java\jdk1.5.0_22\jre\lib\security\cacerts -file D:\signleLogin\wsria.crt -alias wsria

注:C:\Java\jdk1.5.0_22\jre\lib\security\cacerts 路径包含空格的话,需要用””包起来,即:

C:\Program Files\Java\jdk1.5.0_22\jre\lib\security\cacerts

“C:\Program Files\Java\jdk1.5.0_22\jre\lib\security\cacerts”

3.修改客户端tomcat/conf/server.xml

增加1个标签:

<Connector port="8453" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS"

       keystoreFile="E:/signleLogin/wsriakey"

       keystorePass="changeit"/>

这里:keystoreFile="E:/signleLogin/wsriakey" 指向本地证书的物理位置

4.修改客户端tomcat/conf/web.xml

<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

http自动跳转转https

5.在Tomcat项目中修改WEB-INF/web.xml中https的链接

<!-- ========================单点登录开始 ======================== -->
<!--用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!--该过滤器用于实现单点登出功能,可选配置。 -->
<filter>
<filter-name>CAS Single Sign OutFilter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign OutFilter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://portal.szlh.gov.cn/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://localhost.szlh.gov.cn</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<!--该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://portal.szlh.gov.cn/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>https://localhost.szlh.gov.cn</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
<!-- ========================单点登录结束 ======================== -->

 

 

完~

 

   

posted @ 2017-01-11 16:48  北极晨光  阅读(3017)  评论(0编辑  收藏  举报