pigx-cas 单点登录(二)——搭建基础服务

pigx-cas 单点登录(二)——搭建基础服务

准备环境

版本6.1.0-RC3-SNAPSHOT

1.新建用户cas

root登录

 groupadd -g 8002 cas
 useradd -u 8002 -g 8002 cas
 passwd cas

2.登录cas

$ mkdir app
然后文件放入/home/cas/app:
apache-tomcat-9.0.17.tar.gz
jdk-11.0.2_linux-x64_bin.tar.gz

解压
$ tar -zxvf apache-tomcat-9.0.17.tar.gz

$ tar -zxvf jdk-11.0.2_linux-x64_bin.tar.gz

3 环境变量

$ vim ~/.bash_profile

#export PATH
#set java path for weblogic
export JAVA_HOME=/home/cas/app/jdk-11.0.2
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$CLASSPATH:$PATH

source ~/.bash_profile

java -version

java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

4 部署项目

$ cd /home/cas/app

$ mv apache-tomcat-9.0.17 …/tomcat9/

$ mv apache-tomcat-9.0.17/ tomcat-cas

$ pwd

/home/cas/tomcat9/tomcat-cas

4.1 启动

$ cd /home/cas/tomcat9/tomcat-cas/bin

$ ./startup.sh

4.2 关闭

$ ps -ef | grep tomcat-cas

4.3 日志

$ tail -f …/logs/catalina.out

4.4 脚本

$ chmod 755 startCasWeb_8080.sh

$ touch startCasWeb_8080.sh

#!/bin/bash    
# Description: start or stop the tomcat    
# Usage:        tomcat [start|stop|restart|logs|read]    
export PATH=$PATH:$HOME/bin  
export BASH_ENV=$HOME/.bashrc  
# 仅修改用户cas
export USERNAME="cas" 
# 仅修改版本web
TOMCAT_VERSION="tomcat9" 
# 仅修改版本项目包
SERVER_NAME="tomcat-cas"
tomcat_home=/home/cas/$TOMCAT_VERSION/$SERVER_NAME
SHUTDOWN=$tomcat_home/bin/shutdown.sh  
STARTTOMCAT=$tomcat_home/bin/startup.sh  

case $1 in  
start)    
#startup the tomcat   
echo "start $tomcat_home"  
$STARTTOMCAT  
sleep 1  
echo "$tomcat_home/logs/catalina.out"  
cd $tomcat_home/logs    
tail -f catalina.out  
;;

stop)      
echo "stop $tomcat_home"  
$SHUTDOWN  
pidlist=`ps -ef |grep $SERVER_NAME |grep -v "grep" |awk '{print $2}'`   
kill -9 $pidlist  
#delete tomcat temp
rm  $tomcat_home/work/* -rf    
echo "Tomcat Stoped"  
;;  

restart)    
echo "stop $tomcat_home"  
$SHUTDOWN  
pidlist=`ps -ef |grep $SERVER_NAME |grep -v "grep" |awk '{print $2}'`   
kill -9 $pidlist  
  
#delete tomcat temp
rm  $tomcat_home/work/* -rf  
  
sleep 1  
echo "start $tomcat_home"  
$STARTTOMCAT  

sleep 1
echo "$tomcat_home/logs/catalina.out"  
cd $tomcat_home/logs
tail -f catalina.out
;;    
          
logs)  
echo "$tomcat_home/logs/catalina.out"  
cd $tomcat_home/logs    
tail -f catalina.out  
;;    

read)      
echo "read $tomcat_home"  
$SHUTDOWN  
pidlist=`ps -ef |grep $SERVER_NAME |grep -v "grep" |awk '{print $2}'`   
echo "Tomcat pidlist is $pidlist  " 
;;   

*)  
echo "tomcat: usage: tomcat [start|stop|restart|logs|read]"  
exit 1  
esac  
exit 0
        

部署包

采用cas-overlay-template-6.0当执行完毕后,我们便可在项目根目录下的target目录下发现生成的cas.war包。然后我们将其放入Tomcat目录下的webapps下面。
/home/cas/tomcat9/tomcat-cas/webapps
启动startCasWeb_8080.sh


   __   ____      _      ____   __  
  / /  / ___|    / \    / ___|  \ \ 
 | |  | |       / _ \   \___ \   | |
 | |  | |___   / ___ \   ___) |  | |
 | |   \____| /_/   \_\ |____/   | |
  \_\                           /_/ 

CAS Version: 6.1.0-RC3-SNAPSHOT
CAS Commit Id: 49253aaf664be8c98769e0d56a1f994c0f80395a
CAS Build Date/Time: 2019-03-15T23:36:08Z
Spring Boot Version: 2.2.0.M1
Spring Version: 5.1.5.RELEASE
Java Home: /home/cas/app/jdk-11.0.2
Java Vendor: Oracle Corporation
Java Version: 11.0.2
JVM Free Memory: 239 MB
JVM Maximum Memory: 1 GB
JVM Total Memory: 336 MB
JCE Installed: Yes
Node Version: N/A
NPM Version: N/A
OS Architecture: amd64
OS Name: Linux
OS Version: 2.6.32-358.el6.x86_64
OS Date/Time: 2019-03-20T14:39:34.787846
OS Temp Directory: /home/cas/tomcat9/tomcat-cas/temp
------------------------------------------------------------
Apache Tomcat Version: Apache Tomcat/9.0.17
------------------------------------------------------------

环境变量

如果系统为Windows,则用管理员身份修改C:\Windows\System32\drivers\etc\hosts文件host配置修改

172.**.**.8 sso.pig4cloud.net
172.**.**.8 sso.pig4cloud.com

如果系统为Mac OS, 所以用管理员权限打开/private/etc/hosts文件
sudo vim /private/etc/hosts

172.**.**.8 sso.pig4cloud.net
172.**.**.8 sso.pig4cloud.com

在浏览器里访问http://sso.pig4cloud.com:8080/cas/login,可以发现CAS出现登录界面。
默认账号:casuser
默认密码:Mellon
目前的配置仅有这一个用户。输入用户名和密码,登录成功!

**提示:**输入账号密码时候无法登录,原来是打包时候没有,我们手动添加一下。
vim /home/cas/tomcat9/tomcat-cas/webapps/cas/WEB-INF/classes/application.properties
用户名密码位置调整

# Endpoint Security Basic Authentication
spring.security.user.name=pigxcas
spring.security.user.password=Pigxcas
# spring.security.user.roles=
...
##
# CAS Authentication Credentials
#
cas.authn.accept.users=pigxcas::Pigxcas
cas.authn.accept.name=Static Credentials

vim /home/cas/tomcat9/tomcat-cas/webapps/cas/WEB-INF/classes/log4j2.xml
日志位置调整/home/cas/tomcat9/logs

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Specify the refresh internal in seconds. -->
<Configuration monitorInterval="5" packages="org.apereo.cas.logging">
    <Properties>
        <Property name="baseDir">/home/cas/tomcat9/logs</Property>
        <Property name="cas.log.level">info</Property>
        <Property name="spring.webflow.log.level">warn</Property>
        <Property name="spring.security.log.level">info</Property>
        <Property name="spring.cloud.log.level">warn</Property>
        <Property name="spring.web.log.level">warn</Property>
        <Property name="spring.boot.log.level">warn</Property>
        <Property name="ldap.log.level">warn</Property>
        <Property name="pac4j.log.level">warn</Property>
        <Property name="opensaml.log.level">warn</Property>
        <Property name="hazelcast.log.level">warn</Property>
    </Properties>
    ...
</Configuration>

重启后页面访问http://sso.pig4cloud.net:8080/cas/login
在这里插入图片描述
输入账号密码pigxcas/Pigxcas
在这里插入图片描述
我们就完成了CAS的登录过程,基本的CAS服务搭建就实现了。
但是,在登录界面可以发现,弹出了两个提示框,如下图红框所圈:
在这里插入图片描述
主要意思

1、非安全连接:您当前正在通过非安全连接访问CAS,单点登录不起作用。为了进行单一登录工作,您必须通过HTTPS登录。
2、静态身份验证:CAS配置为接受用于主身份验证的静态用户列表。请注意,这只对演示有用。建议您将CA连接到LDAP、JDBC等。这里用户验证方式是静态文件用户名和密码(casuser/Mellon),这个只适合demo使用。

接下来我们就主要围绕这两点来解决问题。

配置证书

1、生成证书

首先是HTTPS,我们知道使用HTTPS是需要证书的,所以接下来我们便制作一个证书。使用JDK自带的工具keytool
钥匙口令:pigxcas

keytool -genkey -alias caskeystore -keypass 123456 -keyalg RSA -keystore thekeystore

使用keytool命令生成证书:
keytool
-genkey
-alias tomcat(别名)
-keypass 123456(别名密码)
-keyalg RSA(算法)
-keysize 1024(密钥长度)
-validity 365(有效期,天单位)
-keystore D:/keys/pigxcas.keystore(指定生成证书的位置和证书名称)
-storepass 123456(获取keystore信息的密码)

首先输入密钥库口令pigxcas,然后在输入名字与姓氏时为为具体路由地址,就是待会CAS认证服务器的地址(这里以sso.pig4cloud.net为例),而其余的根据具体情况填写即可,然后就会在当前目录下生成证书。
在这里插入图片描述

2、导出数字证书

keytool -export -alias caskeystore -keystore thekeystore -rfc -file pigxcas.crt

在这里插入图片描述

3、将数字证书导入jdk下的jre里

win系统:

keytool -import -alias caskeystore -keystore %JAVA_HOME%\lib\security\cacerts -file pigxcas.crt -trustcacerts -storepass changeit

Unix系统:

sudo keytool -import -alias caskeystore -keystore $JAVA_HOME/lib/security/cacerts -file pigxcas.crt -trustcacerts -storepass changeit

说明:
-alias后面的名称要与生成证书的命令里面的alias的名称一致.
–keystore后面指定证书存放的位置,这里我放在/home/cas目录,同时证书名称要与【生成证书】对应的命令里的keystore名称一致
-file后面才crt路径,指定在/home/cas根目录.
–storepass的证书密码要与上面输入的密码一致.

导入JDK时需要默认密码changeit,在命令中已经配置好了。如果没有该密码,则会报java.io.IOException: Keystore was tampered with, or password was incorrect错误。
https://sso.pig4cloud.net:8443/cas/login
在这里插入图片描述
在这里插入图片描述

Q&A

问题1. keytool 错误: java.io.IOException: Keystore was tampered with, or password was incorrect

解决:这里需要输入的密码不是证书的密码执行keytool -import -keystore -file 这个命令提示需要输入密码输入 changeit信任证书OK

问题2.tomcat9控制台乱码问题

解决:/home/cas/tomcat9/tomcat-cas/conf/logging.properties
把java.util.logging.ConsoleHandler.encoding = UTF-8
改java.util.logging.ConsoleHandler.encoding = GBK (或者注释)

问题3. https证书启用,无法访问
访问地址:https://sso.pig4cloud.com:8080/cas/login
在这里插入图片描述

解决:未细看
https://sso.pig4cloud.com:8080/cas/login
https端口是8443,不是8080,要及时切换
https://sso.pig4cloud.com:8443/cas/login

问题4:未找到域名

解决:hosts配置
172...8 sso.pig4cloud.net
172...8 sso.pig4cloud.com

发布了83 篇原创文章 · 获赞 24 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/u010638673/article/details/88706723