周记(cas服务器HTTPS验证配置)
2016-02-24 16:28
190 查看
CAS Server 是一套基于 Java实现的服务,该服务以一个 Java Web Application单独部署在与
servlet2.3兼容的 Web服务器上,另外,由于 Client与CAS Server之间的交互采用
Https协议,因此部署 CAS Server的服务器还需要支持 SSL协议。
注:证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供机构去申请,证书认证一般都是由VeriSign认证
生成服务端密钥文件
登录服务器打开一个CMD窗口(开始菜单 ->运行输入cmd后回车)并切换到tomcat安装目录下(如:c:\tomcat-cas),执行如下命令:
keytool -genkey -alias casserver-keypass demosso -keyalg RSA -keystore casserver.keystore -validity 365
执行后,可以看到tomcat安装目录下生成了一个casserver.keystore文件。如下图:
说明:-alias指定别名为casserver;-keyalg指定RSA算法;-keypass指定私钥密码;-keystore指定密钥文件名称为casserver.keystore;-validity指定有效期为365天。另外提示的输入
keystore密码应与-keypass指定的相同;您的名字与姓氏是CAS服务器使用的域名(不能是IP,也不能是localhost),
这里如果是在本机上做测试,可以在C:\Windows\System32\drivers\etc目录下的hosts文件中添加
127.0.0.1 sso.test.com
来配置虚拟域名,再使用该域名为本地cas服务器的域名
其它项随意填。
注意:服务器上如果有多个JDK,请确认环境变量中的JDK路径为tomcat所使用的JDK,如果不在环境变量中,也可切换到指定JDK的bin目录下执行命令;提示的输入keystore密码应与-keypass必须与指定的相同,否则后面tomcat启动会报IO异常(Cannot
recoverkey)。
生成服务端证书
根据以上生成的服务端的密钥文件可以导出服务端证书,执行以下命令:
keytool -export -alias casserver-storepass demosso -file casserver.cer -keystore casserver.keystore
执行后,可以看到tomcat安装目录下生成了一个casserver.cer文件。如下图:
说明:-alias指定别名为casserver;-storepass指定私钥为demosso;-file指定导出证书的文件名为casserver.cer;-keystore指定之前生成的密钥文件的文件名。
注意:-alias和-storepass必须为生成casserver.keystore密钥文件时所指定的别名和密码,否则证书导出失败,报如下错误:
1. 导入证书文件到cacerts 密钥库文件
导入以上生成的服务端的证书文件到一个cacerts密钥库文件,执行以下命令:
keytool -import -trustcacerts -aliascasserver-storepass demosso -file casserver.cer–keystore cacerts
执行后,可以看到tomcat安装目录下生成了一个cacerts文件。如下图:
如果java的安装目录有空格,执行这句会报错, 我的做法是先把jdk中的cacerts拷贝到根目录下,再执行export操作
1. 服务端Tomcat配置
在制作完成密钥文件、证书文件、密钥库文件后即可进行服务端Tomcat的配置。打开$CATALINA_HOME/conf/server.xml文件,注释掉如下代码段:
<Connectorport="80"protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"/>
并取消注释<Connectorport="8443"protocol="HTTP/1.1" SSLEnabled="true"…/>代码段,修改后如下:
说明:port一般为8443或443,最常用的是443端口(https默认端口),这样https方式访问的时候可以不加端口号(如:https://sso.demo.com/cas/login);keystoreFile为tomcat目录下的密钥文件;keystorePass为私钥密码;truststoreFile为生成的信任文件,如果此处不指定则默认为$JAVA_HOME/jre/lib/security/cacerts文件;其它属性默认即可。
注意:如果启动tomcat报错:connector attributesslcertificate file,则返回修改server.xml文件中上面配置为protocol
= "org.apache.coyote.http11.Http11Protocol"(tomcat7.0版本以上),如图
1. 生成客户端密钥库文件
单向认证的客户端配置只需生成客户端信任文件caserts即可。首先将服务端生成的证书文件(之前生成的casserver.cer文件)复制到$JAVA_HOME/jre/lib/security下,然后打开CMD窗口切换到$JAVA_HOME/jre/lib/security下并执行命令:
keytool -import -trustcacerts -aliascasclient-storepass ssoclient -file casserver.cer -keystore cacerts
执行后,可以看到$JAVA_HOME/jre/lib/security目录下生成了一个cacerts文件。如下图:
到这里 SSL协议配置完成了。如果显示密码错误,请使用 changeit ,这个是jdk默认的证书密码
servlet2.3兼容的 Web服务器上,另外,由于 Client与CAS Server之间的交互采用
Https协议,因此部署 CAS Server的服务器还需要支持 SSL协议。
注:证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书;本教程由于是演示所以就自己用JDK自带的keytool工具生成证书;如果以后真正在产品环境中使用肯定要去证书提供机构去申请,证书认证一般都是由VeriSign认证
生成服务端密钥文件
登录服务器打开一个CMD窗口(开始菜单 ->运行输入cmd后回车)并切换到tomcat安装目录下(如:c:\tomcat-cas),执行如下命令:
keytool -genkey -alias casserver-keypass demosso -keyalg RSA -keystore casserver.keystore -validity 365
执行后,可以看到tomcat安装目录下生成了一个casserver.keystore文件。如下图:
说明:-alias指定别名为casserver;-keyalg指定RSA算法;-keypass指定私钥密码;-keystore指定密钥文件名称为casserver.keystore;-validity指定有效期为365天。另外提示的输入
keystore密码应与-keypass指定的相同;您的名字与姓氏是CAS服务器使用的域名(不能是IP,也不能是localhost),
这里如果是在本机上做测试,可以在C:\Windows\System32\drivers\etc目录下的hosts文件中添加
127.0.0.1 sso.test.com
来配置虚拟域名,再使用该域名为本地cas服务器的域名
其它项随意填。
注意:服务器上如果有多个JDK,请确认环境变量中的JDK路径为tomcat所使用的JDK,如果不在环境变量中,也可切换到指定JDK的bin目录下执行命令;提示的输入keystore密码应与-keypass必须与指定的相同,否则后面tomcat启动会报IO异常(Cannot
recoverkey)。
生成服务端证书
根据以上生成的服务端的密钥文件可以导出服务端证书,执行以下命令:
keytool -export -alias casserver-storepass demosso -file casserver.cer -keystore casserver.keystore
执行后,可以看到tomcat安装目录下生成了一个casserver.cer文件。如下图:
说明:-alias指定别名为casserver;-storepass指定私钥为demosso;-file指定导出证书的文件名为casserver.cer;-keystore指定之前生成的密钥文件的文件名。
注意:-alias和-storepass必须为生成casserver.keystore密钥文件时所指定的别名和密码,否则证书导出失败,报如下错误:
1. 导入证书文件到cacerts 密钥库文件
导入以上生成的服务端的证书文件到一个cacerts密钥库文件,执行以下命令:
keytool -import -trustcacerts -aliascasserver-storepass demosso -file casserver.cer–keystore cacerts
执行后,可以看到tomcat安装目录下生成了一个cacerts文件。如下图:
如果java的安装目录有空格,执行这句会报错, 我的做法是先把jdk中的cacerts拷贝到根目录下,再执行export操作
1. 服务端Tomcat配置
在制作完成密钥文件、证书文件、密钥库文件后即可进行服务端Tomcat的配置。打开$CATALINA_HOME/conf/server.xml文件,注释掉如下代码段:
<Connectorport="80"protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"/>
并取消注释<Connectorport="8443"protocol="HTTP/1.1" SSLEnabled="true"…/>代码段,修改后如下:
说明:port一般为8443或443,最常用的是443端口(https默认端口),这样https方式访问的时候可以不加端口号(如:https://sso.demo.com/cas/login);keystoreFile为tomcat目录下的密钥文件;keystorePass为私钥密码;truststoreFile为生成的信任文件,如果此处不指定则默认为$JAVA_HOME/jre/lib/security/cacerts文件;其它属性默认即可。
注意:如果启动tomcat报错:connector attributesslcertificate file,则返回修改server.xml文件中上面配置为protocol
= "org.apache.coyote.http11.Http11Protocol"(tomcat7.0版本以上),如图
1. 生成客户端密钥库文件
单向认证的客户端配置只需生成客户端信任文件caserts即可。首先将服务端生成的证书文件(之前生成的casserver.cer文件)复制到$JAVA_HOME/jre/lib/security下,然后打开CMD窗口切换到$JAVA_HOME/jre/lib/security下并执行命令:
keytool -import -trustcacerts -aliascasclient-storepass ssoclient -file casserver.cer -keystore cacerts
执行后,可以看到$JAVA_HOME/jre/lib/security目录下生成了一个cacerts文件。如下图:
到这里 SSL协议配置完成了。如果显示密码错误,请使用 changeit ,这个是jdk默认的证书密码
相关文章推荐
- Android Volley完全解析(二),使用Volley加载网络图片
- 从事系统运维的工作已经N年了,蓦然回首,发现网络上并没有我的身影,于是
- Andorid 6.0 如何使用HttpClient
- http协议详解
- DHCP报文交互流程
- 网络的理解
- ubuntu error: the HTTP rewrite module requires the PCRE library.
- TCP/IP协议详解:卷一----笔记(1)概述
- HttpURLConnection类
- Wireshark抓包Https
- 网络学习笔记2
- httpsession 在服务器段进行权限控制
- Android如何使用Https
- 【Linux C网络编程基础】最简单的网络应用程序
- NETCONF--从NETCONF/YANG看网络配置自动化
- Spring-web源码解析之Filter-HiddenHttpMethodFilter
- 网络请求参数加签处理
- 什么是A.B.C类网络 怎么区别和划分
- 虚拟机网络模式介绍与说明
- Java 网络编程(三) 创建和使用URL访问网络上的资源