SSO統(tǒng)一身份認(rèn)證——CAS Server6.3.x配置HTTPS與申請證書(三)

SSO統(tǒng)一身份認(rèn)證——CAS Server6.3.x配置HTTPS與申請證書(三)

背景

單點登錄(SingleSignOn碍岔,SSO)漱竖,就是通過用戶的一次性鑒別登錄君珠。當(dāng)用戶在身份認(rèn)證服務(wù)器上登錄一次以后茅特,即可獲得訪問單點登錄系統(tǒng)中其他關(guān)聯(lián)系統(tǒng)和應(yīng)用軟件的權(quán)限枫疆,同時這種實現(xiàn)是不需要管理員對用戶的登錄狀態(tài)或其他信息進(jìn)行修改的爵川,這意味著在多個應(yīng)用系統(tǒng)中,用戶只需一次登錄就可以訪問所有相互信任的應(yīng)用系統(tǒng)息楔。這種方式減少了由登錄產(chǎn)生的時間消耗寝贡,輔助了用戶管理再登,是目前比較流行的岖研。

單點登錄的使用場景有很多巨坊,C/S氏捞、B/S架構(gòu)的系統(tǒng)均可使用酝静,通常是支持快速配置使用们颜。

業(yè)內(nèi)目前實現(xiàn)SSO的方式有很多種猾愿,在ToC場景下互聯(lián)網(wǎng)公司通常使用的是OAuth2協(xié)議突琳,而ToB場景下大家通常是囊括百家,既支持OAuth2又支持CAS澡匪,還滴支持LDAP熔任。其造成的原因主要是因為在ToB場景下需要對接SSO的系統(tǒng)通常僅支持某個協(xié)議,而這類系統(tǒng)又不是同一個協(xié)議導(dǎo)致唁情。

而我當(dāng)前境況下就是既有ToC場景又有ToB場景疑苔,在該種情況下,我開始對其業(yè)內(nèi)的各種協(xié)議進(jìn)行整合集成甸鸟,這一系列文章將對其業(yè)內(nèi)各個協(xié)議從基礎(chǔ)到深入惦费、從搭建到二次開發(fā)進(jìn)行記錄,同時將其整理出來分享給大家抢韭。

簡介

CAS是Central Authentication Service的縮寫薪贫,中央認(rèn)證服務(wù),一種獨(dú)立開放指令協(xié)議刻恭。CAS 是 耶魯大學(xué)(Yale University)發(fā)起的一個開源項目瞧省,旨在為 Web 應(yīng)用系統(tǒng)提供一種可靠的單點登錄方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目鳍贾。

其主結(jié)構(gòu)由CAS Server鞍匾、CAS Client兩部分組成。下圖為官方提供的結(jié)構(gòu)圖骑科,大家可以作為參考進(jìn)行理解橡淑。
主結(jié)構(gòu).png

環(huán)境

本章節(jié)我們對上圖中的CAS Server進(jìn)行搭建。主要使用的環(huán)境如下

服務(wù)器系統(tǒng):windows 10

環(huán)境:OpenJDK 11

web中間件:tomcat9

CAS Server:6.3.x

數(shù)據(jù)庫:MariaDB 或 PostgreSQL

快速軟件包openjdk11+tomcat9+CASServer.tar

正文

在開始之前咆爽,我們需要準(zhǔn)備一個自己的域名梳码,最好對其已進(jìn)行備案,因為我們下面需要使用到外網(wǎng)伍掀,當(dāng)然如果你沒有這個域名掰茶,那請翻到本節(jié)的第二部分,在本地完成證書的生成與使用蜜笤,并在本地配置hosts進(jìn)行訪問濒蒋。

第一部分:

1、對其域名申請一個免費(fèi)的證書把兔。

單個子級域名的免費(fèi)證書申請有很多種沪伙,可以通過阿里云、騰訊云等進(jìn)行申請县好,具體使用哪個看你的域名托管在誰家围橡,例如域名在阿里云,那建議你使用阿里云平臺中的SSL證書產(chǎn)品模塊進(jìn)行申請缕贡。

如果有需要DV OV EV級別的通配符域名翁授,我可以給大家代購進(jìn)行辦理拣播,有需要的可以私信我,買兩年贈一年收擦。

1.1贮配、打開阿里云頁面

image-20210715143621652

1.2、頁面顯示為購買DV單域名證書塞赂,購買費(fèi)用為0元泪勒,點擊立即購買。

image-20210715143725746
image-20210715143749607

1.3宴猾、此時我們進(jìn)入證書管理頁面——切換至免費(fèi)證書頁簽圆存,發(fā)現(xiàn)可創(chuàng)建證書數(shù)量變成了20個,點擊進(jìn)行創(chuàng)建仇哆。

image-20210715143810008
image-20210715143915212

1.4沦辙、點擊證書申請,填寫需要使用的子域名税产,這里如果是阿里托管的域名怕轿,則驗證方式自動變?yōu)樽詣覦NS驗證偷崩。

image-20210715144129601

1.5辟拷、點擊下一步后,進(jìn)入如下頁面阐斜,這時因我們的域名是阿里云托管衫冻,因此1、2谒出、兩步已自動完成隅俘,我們直接跳過,點擊3笤喳、驗證为居,顯示下圖中域名驗證成功,表示已經(jīng)全部設(shè)置完畢杀狡,點擊提交審核蒙畴。

image-20210715144340525

通常,提交審核后沒有問題馬上就會簽發(fā)呜象,個別有延遲的也是24小時以內(nèi)會有結(jié)果膳凝。

image-20210715144535711
image-20210715144645242

1.6、點擊下載恭陡,選擇tomcat證書蹬音,下載保存。

第二部分

這里是我們手里沒有合適的域名休玩,這時我們需要在本地進(jìn)行創(chuàng)建證書著淆,我們可以直接復(fù)用cas.example.org域名劫狠,這樣我們生成證書更方便一些。如果不使用該域名也可以牧抽,不過需要通過keytool創(chuàng)建自簽證書嘉熊,這里我們復(fù)用一下官方默認(rèn)的域名和證書的密碼。

默認(rèn)使用的域名:cas.example.org
默認(rèn)使用的證書密碼:changeit

打開IDEA底部的Terminal扬舒,輸入gradlew createKeystore

E:\IdeaProjects\cas-server>gradlew createKeystore

該方法會自動創(chuàng)建一個thekeystore證書文件阐肤,并存放在當(dāng)前項目目錄下的/etc/cas目錄下。這時我們直接使用該證書讲坎,是可以使用的孕惜,但是頁面上會顯示不安全,如果想要安全需要執(zhí)行如下代碼晨炕,添加到j(luò)ava的可信認(rèn)證書中衫画。

E:\IdeaProjects\cas-server>keytool -import -keystore "C:\Program Files\Java\jdk-11.0.2\lib\security\cacerts" -file /etc/cas/thekeystore -alias cas

進(jìn)行到這一步,我們下面出現(xiàn)了兩種情況瓮栗,一種是我們當(dāng)前使用的外部tomcat方式削罩,沒有使用其內(nèi)置的。這里我們可以按照第三部分繼續(xù)向下即可费奸。

而另一種是我們使用的gradlew run 啟動的弥激,使用內(nèi)置Spring Boot框架內(nèi)置的tomcat啟動,這時我們需要修改IDEA中cas-server項目的配置文件了愿阐。

修改cas-server\src\main\resources\application.properties配置文件中如下屬性:

##
# CAS Web Application Embedded Server SSL Configuration
#
server.ssl.key-store=file:/etc/cas/thekeystore
server.ssl.key-store-password=changeit
server.ssl.key-password=changeit

cas.server.name={不攜帶協(xié)議頭的證書域名地址}

打開IDEA底部的Terminal微服,輸入gradlew build進(jìn)行重新編譯

E:\IdeaProjects\cas-server>gradlew.bat build

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.8.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 5s
5 actionable tasks: 2 executed, 3 up-to-date
E:\IdeaProjects\cas-server>

再次執(zhí)行g(shù)radlew run進(jìn)行啟動,再次打開發(fā)現(xiàn)證書已生效缨历。

第三部分

2以蕴、對于我們當(dāng)前本地使用的tomcat進(jìn)行配置證書。

2.1辛孵、打開我們的IDEA——tomcat配置丛肮,將其https端口填入8443

image-20210715145754908
image-20210715145734836

2.2、打開tomcat存放的目錄魄缚,找到apache-tomcat-9.0.50\conf\server.xml文件宝与,打開編輯,修改87-93行

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/證書名字.pfx"
                         type="RSA" certificateKeystorePassword="替換為下載下來的密碼文件內(nèi)容"/>
        </SSLHostConfig>
    </Connector>

這里我們將下載下來的證書存放在apache-tomcat-9.0.50\conf\目錄里面鲜滩,自己也可以放到別的地方伴鳖,這里支持絕對路勁和相對路徑。

注:由于tomcat默認(rèn)使用的是Nio模式徙硅,不要啟用org.apache.coyote.http11.Http11AprProtocol榜聂,如果你想使用apr模式,請參見我之前的文章進(jìn)行安裝完畢tomcat并啟用了apr模式后再進(jìn)行設(shè)置嗓蘑。

好了現(xiàn)在我們tomcat的證書已經(jīng)安裝完成须肆,切換回IDEA——cas-server項目匿乃。

其實這時我們啟動是可以訪問的,不過顯示的是不安全的豌汇。

image-20210715151830950

簡單的方式是我們在C:\Windows\System32\drivers\etc\hosts文件底部增加

127.0.0.1   sso.cnhuashao.com

這樣一句話幢炸,這樣瀏覽器訪問該域名時就自動跳轉(zhuǎn)到了127.0.0.1,這時再次訪問拒贱,我的連接就變成了安全的了宛徊。

image-20210715152006671

當(dāng)然在生產(chǎn)情況下時我們就需要配置域名的解析和外網(wǎng)IP了,讓其域名解析到我們的服務(wù)器上逻澳,后續(xù)我們再進(jìn)行講解闸天。

為了更方便與后續(xù)的使用調(diào)試,我們對其進(jìn)行修改一下IDEA中的tomcat設(shè)置斜做。

image-20210715152637919

修改一下之前的apache-tomcat-9.0.50\conf\server.xml文件苞氮,將其8443端口更改為443

    <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/證書名字.pfx"
                         type="RSA" certificateKeystorePassword="替換為下載下來的密碼文件內(nèi)容"/>
        </SSLHostConfig>
    </Connector>

再次啟動,我們訪問的地址就變得簡潔了一些瓤逼。

image-20210715152953497

至此笼吟,我們本節(jié)的配置就完成了。

下一節(jié)我們將對其認(rèn)證的實現(xiàn)進(jìn)行研究霸旗,敬請關(guān)注贷帮。

本文聲明:

image

知識共享許可協(xié)議
本作品由 cn華少 采用 知識共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末定硝,一起剝皮案震驚了整個濱河市皿桑,隨后出現(xiàn)的幾起案子毫目,更是在濱河造成了極大的恐慌蔬啡,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镀虐,死亡現(xiàn)場離奇詭異箱蟆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刮便,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門空猜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恨旱,你說我怎么就攤上這事辈毯。” “怎么了搜贤?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵谆沃,是天一觀的道長。 經(jīng)常有香客問我仪芒,道長唁影,這世上最難降的妖魔是什么耕陷? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮据沈,結(jié)果婚禮上哟沫,老公的妹妹穿的比我還像新娘。我一直安慰自己锌介,他們只是感情好嗜诀,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孔祸,像睡著了一般裹虫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上融击,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天筑公,我揣著相機(jī)與錄音,去河邊找鬼尊浪。 笑死匣屡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拇涤。 我是一名探鬼主播捣作,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鹅士!你這毒婦竟也來了券躁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掉盅,失蹤者是張志新(化名)和其女友劉穎也拜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體趾痘,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慢哈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了永票。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卵贱。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侣集,靈堂內(nèi)的尸體忽然破棺而出键俱,到底是詐尸還是另有隱情,我是刑警寧澤世分,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布编振,位于F島的核電站,受9級特大地震影響罚攀,放射性物質(zhì)發(fā)生泄漏党觅。R本人自食惡果不足惜雌澄,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杯瞻。 院中可真熱鬧镐牺,春花似錦、人聲如沸魁莉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旗唁。三九已至畦浓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間检疫,已是汗流浹背讶请。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留屎媳,地道東北人夺溢。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像烛谊,于是被迫代替她去往敵國和親风响。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容