搭建CAS单点登录系统(一)之单点登录介绍和tomcat配置https双向认证

单点登录介绍和tomcat配置https双向认证

记录CAS单点登录实操、坑、原理、总结,在日后再次使用时可以直接过来翻阅

单点登录

什么是单点登录:

单点登录(Single Sign On),简称SSO。是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

 

背景:

随着企业的发展,业务系统的数量在不断的增加,老的系统却不能轻易的替换,会带来很多的开销。其一是管理上的开销,需要维护的系统越来越多。很多系统的数据是相互冗余和重复的,数据的不一致性会给管理工作带来很大的压力。业务和业务的相关性也越来越大,例如公司的计费系统和财务系统,财务系统和人事系统之间都不可避免的有着密切的关系。

为了降低管理的消耗,最大限度的重用已有投资的系统,很多企业都在进行企业应用系统集成(EAI)。企业应用集成可以在不同层面上进行:例如在数据存储层面的“数据大集中”,在传输层面上的“通用数据交换平台”,在应用层面上的“业务流程整合”,和用户层面上的“通用企业门户”等等。还有身份认证的整合,也就是单点登录。

 

单点登录的技术实现机制

1、当用户访问系统时,会检查用没有登录过,没有就会重定向到认证系统进行登录认证。

2、认证成功认证系统会返回一个唯一标识用户身份的id(这里使用ticket指代)到用户的浏览器cookie中

3、用户再次访问或者重定向到网站应用,会同时将身边标识提交

4、应用系统通过这个身份标识去认证系统认证,认证通过,即可处理用户请求并返回数据给用户

5、其他的应用系统,在被用户访问时都会走上面相同的逻辑

核心就是共用一个认证系统,也就是单点登录系统。

 

HTTPS工作原理

CAS默认使用HTTPS,什么是HTTPS

 

利用tomcat服务器配置https双向认证

 

1、为服务器生成证书

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -validity 36500

回车后依次输入一些信息:(密码我填的是password)

输入密钥库口令:  
再次输入新口令: 
它们不匹配。请重试
输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
  [Unknown]:  localhost
您的组织单位名称是什么?
  [Unknown]:  kim
您的组织名称是什么?
  [Unknown]:  kim
您所在的城市或区域名称是什么?
  [Unknown]:  kim
您所在的省/市/自治区名称是什么?
  [Unknown]:  kim
该单位的双字母国家/地区代码是什么?
  [Unknown]:  123
CN=localhost, OU=kim, O=kim, L=kim, ST=kim, C=123是否正确?
  [否]:  y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 36,500 天):
	 CN=localhost, OU=kim, O=kim, L=kim, ST=kim, C=123
输入 <tomcat> 的密钥口令
	(如果和密钥库口令相同, 按回车):  
[正在存储/home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore]

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -destkeystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

名字和姓氏那一项的值填域名或者IP,之后只能用填的值访问。如果填的是域名,只能用域名访问;反之,只能用IP访问。其他随便填。

2、为客户端生成证书

keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore /home/kim/下载/apache-tomcat-8.5.35/https/mykey.p12

回车后输入信息:(密码我填的是123456)

输入密钥库口令:  
密钥库口令太短 - 至少必须为 6 个字符
输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
  [Unknown]:  localhost
您的组织单位名称是什么?
  [Unknown]:  kim
您的组织名称是什么?
  [Unknown]:  kim
您所在的城市或区域名称是什么?
  [Unknown]:  kim
您所在的省/市/自治区名称是什么?
  [Unknown]:  kim
该单位的双字母国家/地区代码是什么?
  [Unknown]:  123
CN=localhost, OU=kim, O=kim, L=kim, ST=kim, C=123是否正确?
  [否]:  y

正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 90 天):
	 CN=localhost, OU=kim, O=kim, L=kim, ST=kim, C=123
[正在存储/home/kim/下载/apache-tomcat-8.5.35/https/mykey.p12]

客户端的CN可以是任意值,双击mykey.p12文件,即可将证书导入至浏览器(客户端)。

3、让服务器信任客户端证书

keytool -export -alias mykey -keystore /home/kim/下载/apache-tomcat-8.5.35/https/mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file /home/kim/下载/apache-tomcat-8.5.35/https/mykey.cer

上述命令大致解释一下,讲客户端证书导出保存为mykey.cer文件

执行结果:

➜  ~ keytool -export -alias mykey -keystore /home/kim/下载/apache-tomcat-8.5.35/https/mykey.p12 -storetype PKCS12 -storepass 123456 -rfc -file /home/kim/下载/apache-tomcat-8.5.35/https/mykey.cer
存储在文件 </home/kim/下载/apache-tomcat-8.5.35/https/mykey.cer> 中的证书

4、将客户端导出的证书导入到服务器证书库

keytool -import -v -file /home/kim/下载/apache-tomcat-8.5.35/https/mykey.cer -keystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore

上述命令输入后,会有交互式命令提示,让你输入证书库的密码,我这里是上面设置的password

输入密码后,接着会有交互式提示,问你是否信任证书,填y表示是即可:

是否信任此证书? [否]:  y

可以使用如下命令查看证书库中的证书:

keytool -list -keystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore

 回车后需要输入证书库密码,密码输入后的显示为:

密钥库类型: jks
密钥库提供方: SUN

您的密钥库包含 2 个条目

tomcat, 2018-11-27, PrivateKeyEntry, 
证书指纹 (SHA1): 67:00:D5:7F:31:A8:1F:EC:A5:BF:2A:44:C5:43:94:45:F4:62:0B:1E
mykey, 2018-12-14, trustedCertEntry, 
证书指纹 (SHA1): 53:76:7B:63:1C:65:6E:DC:6C:93:A5:1D:B2:75:10:21:88:0F:D2:E3

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -destkeystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

5、让客户端信任服务端证书

keytool -keystore /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore -export -alias tomcat -file /home/kim/下载/apache-tomcat-8.5.35/https/tomcat.cer

导出服务端证书库,存储到tomcat.cer文件中,需要输入证书库密码,我的是password

输入后提示为:

存储在文件 </home/kim/下载/apache-tomcat-8.5.35/https/tomcat.cer> 中的证书

双击tomcat.cer文件,按照提示安装证书,将证书填入到"受信任的根证书颁发机构"。

6、配置tomcat

打开tomcat目录下的conf/sever.xml,找到Connector port="8443"配置段,修改为如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 

     SSLEnabled="true" maxThreads="150" schema="https"

     secure="true" clientAuth="true" sslProtocol="TLS"

     keystoreFile="/home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore" keystorePass="password"

     truststoreFile="/home/kim/下载/apache-tomcat-8.5.35/https/tomcat.keystore" truststorePass="password"

    />

7、测试

在浏览器中输入:https://localhost:8443/,会弹出选择客户端证书界面,点击“确定”,会进入tomcat主页,地址栏会有“锁”图标,表示本次会话已经通过HTTPS双向验证,接下来的会话过程中所传输的信息都已经过SSL信息加密。

我们的证书一开始创建不是特殊机构颁发的,所以本地测试需要在浏览器里导入证书,火狐浏览器需要添加例外

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值