2019年5月17日 星期五

Fortigate IPSec VPN Error "ignoring request to establish IPsec SA, no policy configured"

最近瘋狂玩弄被玩弄Azure cloud service....

它可以跟內網建立IPSec VPN,增加IT人員負擔強化內網跟Azure之間的overhead安全性。

好啦!問題來啦!拿了一台舊舊的Fortigate來被搞搞它.....出現以下error....

"ignoring request to establish IPsec SA, no policy configured"

這要下command去debug看,那台fortigate舊到連WEB UI上的LOG都沒有,真是法刻由!

一查之下還真是複雜,嚇死我了,其實是週五懶得看了,沒想看到官網的技術文件還真是簡單又明瞭!


Hey Dude, To remedy this, ensure that there is at least one security policy where one of the interfaces is a VPN tunnel interface and there is at least one route which uses the tunnel interface as the gateway.


意思就是,孩子,把Security Policy設一下,還有Routing搞一搞。(喔....原來no policy configured是說Security Policy)

好孩子我就照辦,就OK了!

收工。

2019年5月16日 星期四

資源回收桶損毀

WTF.............................

昨天發現我的AD伺服器出現這個錯誤訊息,一整個傻眼.....

錯誤訊息大約是userprofile下的desktop, Downloads, Favorites等等的資源回收桶整組壞了了......

還好記得之前上過課說資源回收桶可以重建,但怎麼重建忘了.....

請教google大神

$RECYCLE.BIN.{645FF040-5081-101B-9F08-00AA002F954E}

1. 到userprofile目錄下,在錯誤提示所顯示的目錄下(可能好多個),新增目錄,目錄名稱就是上面那串。

2. 重開

3. 緊張一下是必須的!

4. 也等太久了吧!

5. crtl+alt+del 登入

6. 看!都回來了!真是挖草啊!

收工!

2019年5月15日 星期三

Azure Backup Server 安裝需知 vmware 6.7

今天要來講演的題目是如何安裝:Azure Backup Server

請參閱:https://docs.microsoft.com/zh-tw/azure/backup/backup-azure-microsoft-azure-backup

收工!

挖草,搞笑嗎?

你沒注意看標題,上面寫「需知 vmware6.7」嘛!

「需知」備忘如下:

1. SQL Server,請先Azure Backup Server安裝檔裡面的SQL SERVER,先把它裝起來先,都用預設值即可,安裝完再裝Azure Backup Server,不然不知哪出了甚麼鬼,只要安裝到SQL處都會打叉叉叉叉叉叉.....

2. .Net Framework 3.5還有4.6的樣子,給他裝一裝。

4. Powershell要先enable hyper-V的支援,開啟PS,把下面的字打上去,弄完要重開一下。

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All


5. Recovery Services Vaults要載憑證,先把憑證載下來備用,安裝中途會去Azure註冊伺服器,會用到這個憑證,若安裝失敗及其他種種原因,最好先把Azure上註冊的伺服器刪除,重做一次,不然可能會出現錯誤!
a. 要刪除的伺服器位置如下圖
b. 可能會遭遇錯誤的地方如下下圖中綠色勾勾第一項「Microsoft Azure復原服務代理程式」。




6. 如果要備份的標的為vmware 6.7,備份伺服器要開啟TLSv1.2支援以及安裝憑證

a. 到vcenter首頁右下角,下載憑證,並安裝。

b. 安裝機碼,複製下來,貼上記事本,另存成xxx.reg,對此檔案右鍵,選安裝還是合併啥的,OK後,重開機,八成就可以了.......................個你大頭鬼!
Windows 登錄編輯程式 5.00 版
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 "SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SystemDefaultTlsVersions"=dword:00000001 s"SchUseStrongCrypto"=dword:00000001

關於安裝機碼這件事,微軟的建議就是上面說的那樣,但一定是我人品不好、複製貼上的技術太差以及都用「中指」按右鍵的緣故,雖然windows server很開心地告訴我安裝完畢,但............WTF,不行啊,搞料半天,到registry裡實際看,上面四隻是空氣嗎?!

所以承標題重點

「vmware 6.7」

把上面WTF的機碼,老老實實手動加入registry...然後重開機...就對啦!





好!放飯!




2019年5月13日 星期一

Azure and Fortigate IPSec VPN with Multiple vlans

哈囉!偶又來了!

今天要來記錄一下的是Azure跟我的網路之間建立VPN的方式。按照我的步驟,保證你看的灰傻傻,爛勾勾~

場景:

Azure
Fortigate, Fortigate Internal是一堆Vlan Trunk上來,再做NAT從External出去。

好!

Azure自己找Google怎麼設定,如果你會看的一頭霧水也是正常,因為小弟也是,反正呢...

1. 「虛擬網路」,就是你租用的雲端的整個網路,如10.10.0.0/16,預設network都用16bits。

2. 「虛擬網路」裡面會有一個Gateway Subnet,就是出門用的,這個預設會是上面的再小一
點,如10.10.1.0/24之類。

3. 「區域網路閘道」就是你自己的Site的網路,例如要建IPSec Site to Site,Azure要連到的你自己的某個防火牆或VPN GATEWAY就是,以及你自己網路中的IP Network是甚麼就是囉!

反正呢,不經一事,不長一智,不搞死你,怎麼會叫微軟?

好,就當你Azure搞定了。

其實你Google的步驟做完,連Fortigate相關設定應該也搞定了。

這個紀錄主要是針對後面的Vlan Trunk,看圖就了改啦!

28是Azure Netowork 經由 Azure VPN Interface 到內網 110,沒有NAT。
29是內網110到Azure VPN Interface,沒有NAT。
30是內網110到其他一狗票網路用的,要NAT。


嗯,這樣應該就可以通囉!


2019年5月8日 星期三

azure與ad同步 onmicrosoft.com

嗯,又到了廢話的時間。

azure是微軟的該死的、夭壽的網路服務,其複雜度遠超普通笨蛋的想像....對,我就是笨蛋。

如果自己的環境中有自架AD,而且想不開想要同步到Azure,那麼恭喜你,這篇廢話,可能就是你的參考資料之一。

準備事項:

一、Azure AD:比方說弄個 water.xxx.edu.tw,然後做一下DNS驗證,讓它生效!

二、確認內部AD的東東:
1. 先裝AD,廢話!以我的環境已經有個Win2008 R2的AD,網域名稱為 cloud.xxx.edu.tw。
2. 再搞另一台AD,Win2012,加入網域,好囉!我有兩台了!
3. 太無聊了,再弄另一台,Win2016,加入網域,靠....得住啊!我有三台了!

4.那就拿Win2016來開刀。

5. 載Azure AD Connect
https://docs.microsoft.com/zh-tw/azure/active-directory/hybrid/how-to-connect-install-custom

6. 安裝的過程中,其中有一步,如下圖:

*** 此圖是取用自 http://itbillboard.blogspot.com/2016/07/office-365ad.html

IT BillBoard




7. 上面應該是最關鍵的一步.....

屬於重點的廢話來了!!!!注意喔!

如果你的內部的ad網域名稱與azure上的不一樣,但若你照上面的圖,繼續安裝,那你同步過去的使用者都會變成:

user1@waterxxxedutw.onmicrosoft.com
user2@waterxxxedutw.onmicrosoft.com
....

water.xxx.edu.tw 變成 waterxxxedu.tw,且還多了 onmicrosoft.com 這個 domain,機不機車?法不法克?

當你登入office365時,帳號就要打上面的這堆「使」....用者名稱。

解法很簡單:在azure上搞得AD名稱跟內部的AD名稱一樣就好了!

看到這裡,又沒有一種............這篇果然是廢文的港覺?

但這個問題在google一下,還不少啊,而我也中了招,內部的叫cloud.xxx.edu.tw,那azure上的叫azure.xxx.edu.tw是安怎,不行膩?

偏偏看到的解法都看不懂,最近重新搞AD,要弄同步,才發現這個地方必須注意。

若你的AD名稱與Azure上的一樣,且Azure上的名稱經過驗證,上圖第一個紅框框裡的Azure AD Domain會出現「已驗證」,就放心同步過去吧!大功告成啦!



















2019年5月6日 星期一

Windows 2012 ldaps configuration

好啦!有鑑於windows server 2008即將下課,那麼就來研究一下怎麼用server 2012把他換掉。

場景:windows server 2008 ad server,跟新安裝的server 2012。

待辦事項::
1. windows server 加入既有ad domain,並且成為網域控制站
2. 2012 ad server要支援ldaps

待辦事項一:自己google
待辦事項二:自己google

那這篇不就是廢文!?

哎呀!被你發現了!顆顆~

好啦!開玩笑地!

server 2012如何enable ldap over ssl真的請自己google,這邊要解決的是ldapsearch的問題

# ldapsearch -xLLL -H ldaps://x.x.x.x  -D "CN=Administrator,CN=Users,DC=xx,DC=xx,DC=edu,DC=tw" -w wtf1234 -b "OU=xx,DC=xx,DC= xx,DC=edu,DC=tw" "samaccountname=username1234" ProfilePath name

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)   <<< 就是這個問題

用s_client來瞧瞧...

【2008】
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : ECDHE-RSA-AES256-SHA
    Session-ID: D32500004D1BBCEABB8CC65464391D94E283AEB8AE3A70CF8B7E77BD834C2A3C
    Session-ID-ctx:
    Master-Key: F96689E54A9784028E02F4C801B48407D152D21C6FD5F7702925C5C0B57D691ECD7FCE359C7DBED3F765877AF01574A3
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1557108847
    Timeout   : 300 (sec)
    Verify return code: 10 (certificate has expired)
---

好啦!我知道SSLv3要關掉好嘛!但我要先讓這些鬼東西work。

【2012】
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: B7230000C3DFC61E4C762CE28B1F5532D02406B4FE946316A915062C4A4E81EC
    Session-ID-ctx:
    Master-Key: A7786FFD87EA89D3A6D5DED482DD63C9AA8CC1BF72DFEE9ED4551742597FB19C9B066FB06BD54D7EABD8C121FF6729BE
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1557106803
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)

看起來是Protocol的差別?

來google一下
https://ubuntuforums.org/showthread.php?t=2292281

這篇2015的文章提到ldapsearch貌似有TLS v1.2的問題?我的ldapsearch好像也是2015年的版本。

那就來google一下怎麼關掉TLS v1.2
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn786418(v=ws.11)

HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols 

依照說明把TLS v1.2 disbaled後, reboot server.

來測測看!
# ldapsearch  -xLLL -H ldaps://x.x.x.x -D "CN=Administrator,CN=xx,DC=xx,DC=xx,DC=edu,DC=tw" -w password123 -b "OU=xx,DC=xx,DC=hfu,DC=edu,DC=tw" "samaccountname=user123" ProfilePath name
dn: CN=user123,OU=xx,DC=xx,DC=xx,DC=edu,DC=tw

name: user123

profilePath: \\xx\userprofile$\user123

# ./chpass.sh user123 mynewpassword my_ad_ou_                                                                                    
# chpass.sh 是改AD密碼的script                       

$CHKUSER says user123 is valid.

modifying entry "CN=user123,OU=xx,DC=xx,DC=xx,DC=edu,DC=tw"

Check User credentials via binding AD server and retriving some stuff from AD...
dn: CN=user123,OU=xx,DC=xx,DC=xx,DC=edu,DC=tw
name: user123
homeDirectory: \\xx\userprofile$\user123

profilePath: \\xx\userprofile$\user123

好了!收工!有問題請自己解決!



2019年4月15日 星期一

windows 2003 c000021a {Fatal System Error} 排解




最近淌渾水,不干我的事要雞婆,解決了,還要被嫌,踢公伯啊,安捏乾丟?

好,抱怨完畢,進入技術正題....

這個系統是台老IBM伺服器,跑Windows 2003 Ent,開機時出現這個狀況.....

STOP: c000021a {Fatal System Errot}的BSOD。

安全模式還是可以用的。
那怎麼辦?趕快看微軟說法: 

好了,看完了相信你還是一頭霧水,那麼就說我的解決步驟吧!

1. vmware converter cd 伺候,Cold Clone. 這裡要靠北一下vmware,好像沒新版的converter Cd可以用齁?

只好挖了一個舊版,直接轉移到vsphere 6.7,好棒棒,對不對?別傻了!當然不可能啊,先轉到一個NAS,再用workstation升級vm版本,開起來後,再來解決後續BSOD問題。光弄這個半天就去掉了。

2. 開始解決藍屏問題。把虛機開機,發現狀況是一樣的,那麼就先暫時排除是硬體問題。

3. 省略一堆查LOG、測試及除錯過程,只講最後。根據說明,很有可能是某個程式衝突所致,但見鬼了,這機器平常沒人用啊,被駭?有可能,但沒證據;更新?別鬧了,這系統早就沒更新了,新增移除程式裡也沒有最近日期的更新,那不就是進到死胡同?苦惱啊!

啊!反正不是我的機器,管這麼多幹嘛?下班囉!........喂!別鬧了!

4. 就在下班前一刻,靈光乍現,那個賽X鐵克會更新病毒碼甚麼OOXX的啊!莫非... ?

5. 安全模式下要移除某些程式,如果出現錯誤,或是不給移除,那就


在 Window 安全模式時

  1. 開始 > 執行 > 輸入「CMD」,開啟命令提示字元 。
  2. 鍵入「REG ADD “HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\MSIServer” /VE /T REG_SZ /F /D “Service”
  3. 接著輸入「net start msiserver」來啟動Windows Installer服務。
  4. 這時程式應該是可以去移除了!!

在 Windows 安全模式(含網路功能)時

  1. 開始 > 執行 > 輸入「CMD」,開啟命令提示字元 。
  2. 鍵入「REG ADD “HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\MSIServer” /VE /T REG_SZ /F /D “Service”
  3. 接著輸入「net start msiserver」來啟動Windows Installer服務。
  4. 時程式應該是可以去移除了!!
6. 把賽X鐵克移除後,重新開機,..........竟然就開起來了! 挖草啊!好你的賽X鐵克!

2018年10月3日 星期三

新增Windows AD user by ldapadd

沒想到這麼快又來自虐了。

今天的任務是用ldapadd來新增AD user。(其實是自找麻煩)

場景:有個AD server且支援ldaps,有個Linux server。

首先要生出來一個ldif檔,叫他aduser.ldif好了,這個檔有點機車....

dn: CN=$user_id, OU=your_ou, DC=your_dc
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: $user_id
sn::$sn                       #這是姓
givenName::$gn       #這是名
displayName::$fullname #這是姓名
mail: $mail
description::$fullname
profilePath: \\\\ad_server_name\\userprofile$\\user_id  #指定user profile的路徑
sAMAccountName: $user_id      #看後面說明
userPrincipalName: $user_id@cloud.xxx.edu.tw  #看後面說明

dn: CN=$user_id, OU=your_ou, DC=your_dc
changetype: modify
replace: unicodePwd
unicodePwd::$pass

dn: CN=$user_id, OU=your_ou, DC=your_dc
changetype: modify
replace: userAccountControl
userAccountControl: 66048  #這個鬼數字自己google

對了,不是你眼殘,有些attribute是兩個::,以本人粗淺的認知,如果值是編碼過的,就用兩個::,那不用編碼的怎麼辦,啊就一個:啊!怎麼樣,厲害的廢話嚇到你了吧!

那麼怎麼編碼呢?好孩子問到重點:

密碼的比較麻煩,要用UTF-16LE編碼,再用base64編碼,變成密碼。
pass=`echo -n \""$pass"\"|iconv --to utf-16le|base64`
echo "Encoded Passowrd is $pass"

例:
# echo -n \""GuessWhat"\"|iconv --to utf-16le|base64
IgBHAHUAZQBzAHMAVwBoAGEAdAAiAA==

如果只是一般字串
sn=`echo $sn | iconv -f UTF8 | base64`

例:
sn=`echo 中文嘿嘿嘿 | iconv -f UTF8 | base64`
echo $sn
5Lit5paH5Zi/5Zi/5Zi/Cg==

順帶提示您重點中的重點,sn是姓,我相信不會有人的姓是中文嘿嘿嘿。

## 執行新增
ldapadd -x -H ldap_server -D "CN=Administrator,CN=Users,DC=your_dc" -w GodDamnPassowrd -f aduser.ldif

adding new entry "CN=123123,OU=your_ou, DC=your_dc"

modifying entry "CN=123123,OU=your_ou, DC=your_dc"

modifying entry "CN=123123,OU=your_ou, DC=your_dc"

收工。喊太早了,你應該去AD上面看看結果再說。


剛剛說到兩個attribute...

sAMAccountName: user_id
userPrincipalName: user_id@xxx.edu.tw

這兩個attribute會對應到AD上,帳戶=>內容 => 帳戶,裡的「使用者登入名稱」跟「使用者登入名稱(Windows 2000前版)」

那麼這兩個attribute有甚麼鬼屁用?以沒有設定這兩個attribute的情況下來測試一下:

moodle => 不受影響
vmware vdi => 無法登入

設定之後,VDI就可以正確登入了。

廢話結束,謝謝收看,掌聲不用,下次不用再來沒關係。


2018年10月2日 星期二

ldapmodify 變更 windows AD user 密碼

環境:
1. Windows Server + AD
2. Ubuntu Server 沒有AD (廢話了一下)

本篇目的:用openldap的指令ldapmodify去修改那該死的AD user password(為什麼要搞死自己
呢?)

其實就是達到某種密碼同步啦!

前提:Windows AD必須支援ldaps,怎麼支援?你說說看,我為什麼要跟你說?

廢話不多說,開始:

#!/bin/bash
b64pass=`echo -n \""GodDamnPassword"\"|iconv --to utf-16le|base64`

echo "dn: CN=UserAccount, OU=YourOU, DC=YourDC" > test.ldif
echo "changetype: modify" >> test.ldif
echo "replace: unicodePwd" >> test.ldif
echo "unicodePwd::$b64pass" >> test.ldif

ldapmodify -H ldaps://AD_Server  -D "CN=Administrator,CN=Users,DC=YourDC" -W -f test.ldif

執行時會問你LDAP PASSWORD,請乖乖輸入AD的Administrator密碼,若你有好狗運,會出現以下:


root@server:/path/to/blablavla # ./chpass.sh 
Enter LDAP Password:
modifying entry "CN=UserAccount, OU=YourOU, DC=YourDC" 

然後...還然後?趕快去試試看啊!這還要我教?

OR...

#b64pass=`echo -n \""GodDamnPassword"\"|iconv --to utf-16le|base64`
#ldapmodify -H ldaps://AD.Server -D "CN=Administrator,CN=Users,DC=YourDC" -W <<EOF
> dn: CN=UserAccount, OU=YourOU, DC=YourDC
> changetype: modify
> replace: unicodePwd
> unicodePwd::$b64pass
> EOF

其實這個unicodePwd還蠻該死的,google一下便知一堆G拔毛的鬼啊!

2016年1月14日 星期四

Stages Power Meter Stages 功率計

【Part 1】
2015年底入手一個功率計,Stages Power meter,左腿的。

怎麼說呢?騎了幾回訓練台,再外騎個兩回,怎麼著?電池居然沒電了,真瞎,換一顆,又沒兩下就陣亡,原廠說可以撐200Hrs的咧,W..T..F..

目前電池拔了,用除濕機伺候ing...,晚點再用吹風機小心伺候,之後把新電池裝回,再用電火布好好遮羞一下,同時在電池蓋背面,也上了幾層電火布,如果還是不行,就準備出保~

用google查 stages power meter drain,一缸子人中獎啊,所以不用太難過ㄡ。

【Part 2】
等待中...

2016/01/15 晚上, 吹了兩天的除濕機外加幾分鐘的吹風機後,換了一顆新的電池,外面再用電火布纏了幾圈,晚上訓練台跑跑,隔天2016/01/16電池還是滿格,看來似乎有效,再觀察幾回。

所以截至目前為止的結論:

1. 一切正常時,還不賴..
2. 對「濕氣」宇宙無敵霹靂超級敏感..


【Part 3】
SHxT!....還Part3,別搞我好ㄅ!

2016年1月6日 星期三

moodle 2.6 with ldap over ssl (Windows AD)

windows ad,簡單說,就是不搞死你不甘心就對啦!

場景簡介:moodle 2.6用ldap協定認AD帳號,OK就OK,不OK就認證失敗,以我的環境來說,有個問題,就是已經OK的使用者不能改密碼,真瞎。

為啥咧?

因為AD就是要搞你啊!哈哈,如果不是LDAP over ssl,簡稱ldaps的connection,那client對AD的操作幾乎就是read-only,看的到吃不著,我爽給你甚麼你就吃甚麼。

解決方案:啟動ldaps on windows ad

AD: windows 2008 R2

【enable ldaps on windows ad】

這是用windows 2008的certificate server做的
http://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx

如果火氣大
http://www.javaxt.com/Tutorials/Windows/How_to_Enable_LDAPS_in_Active_Directory
用openssl也行,一開始用這個,因為我們的CA在linux server上,但我沒做出來,所以僅供參考,方法步驟看起來是對的。

照上述步驟,用ldap client連連看,應該就可以了.........吧!?想得美啊!

如本文開宗明義所揭示,不搞死你怎麼會甘心?上面,只是把門做好,鎖匙還沒給你啊,急啥?

給你鎖匙
https://technet.microsoft.com/en-us/library/cc546864.aspx

dsHeuristics 的 值 改成 001,就是 KEY。

以上弄好了,LDAPS也差不多了,reboot一下AD伺服器後,用ldap client以ldaps(tcp 636),連連看,有撈到點甚麼東西也就行了。

接下來搞moodle,moodle部分簡單多了...
1. 確認 apache 支援 openssl
2. 確認 php 支援 openssl
3. 確認 openldap 支援 openssl
4. 確認你裝了openssl
5. 確認你裝了openldap
6. 從AD匯出憑證
7. 到apache,匯入憑證
8. ldap載入憑證
9 用php測試ldaps是否OK
10. 用moodle登入、修改密碼是否OK
11. 你還想繼續搞啊,去喝咖啡吧!

一般來說如果是跑web server大多都會裝好,openldap則未必,若是ubuntu系統,請愛用apt-get
// install openldap
# apt-get install openldap openldap-devel
劈哩啪啦裝好即可

提醒你一下,上面已經到第五步了。

6. 到AD上匯出憑證
MMC主控台 => 嵌入 憑證 => 項目選 【本機電腦】=> 受信任的根憑證brabra => 找到你的憑證 => 按右鍵選【匯出】=> 匯出格式 選 cer => 找個目錄擺著

然後想辦法憑證搞到apache server上,用FTP、SCP(如果你有裝)等等都可。

7. apache server (ldap client),也就是跑moodle的地方
# openssl x509 -in 我的剛剛傳來的.cer -inform DER -out 我要存到啥地方.pem -outform PEM
這個-out xxx.pem,最好放在 /etc/ssl/certs,也就是ssl預設的路徑下。

 再來執行 c_rehash 指令,稀哩呼嚕,跑完沒出包,即可。

7.5 (這是多的) 可以test一下
openssl verify -verbose -CApath /etc/ssl/certs /etc/ssl/certs/my_server_certificate.pem
/etc/ssl/certs/my_server_certificate.pem: OK

 若出現OK,算你好運,到目前為止一切順利。

 順便提醒一下,若前端web server有多台,比方說有load balance,這個pem憑證,每台都要做一次。

 8. /etc/ldap/ldap.conf
# Define location of a CA Cert
TLS_CACERT /etc/ssl/certs/my_server_certificate.pem
TLS_CACERTDIR /etc/ssl/certs

 TLS_REQCERT never

 9. 以上都好了就restart一下apache
# service apache2 restart

 測試

 # a.php
<?php
function connect_AD()
  {
    $ldap_server = "ldaps://my.ad.server.ip.or.FQDN" ;
    $ldap_user   = "CN=Administrator,CN=你的,DC=你的,DC=你的,DC=你的,DC=你的" ;
    $ldap_pass   = "密碼" ;
    $ad = ldap_connect($ldap_server) ;
    ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) ;
    $bound = ldap_bind($ad, $ldap_user, $ldap_pass);
    return $ad ;
  }
connect_AD();
?>

# php a.php
沒出現error,就好啦!

 10. 以moodle admin登入,把ldap的認證,改成ldaps://,另外有一個參數,有關密碼修改的,叫甚麼【使用標準頁面來變更密碼】,勾【是】。就可以試試看,登入,改密碼。

 後記:改完蠻有趣的,會有一段cache短暫的時間,這段時間內,只要認這台AD的服務(包含其他非MOODLE的),新舊密碼都可以用,真是太搞笑啦!
















呼叫呼叫、測試測試

天地玄黃,宇宙洪荒,這是一個測試。