[活動]《我的包包,裝我的旅行》今年暑假,送你去度假!(8/28 得獎名單公佈)[公告] 豐掌櫃《超級吸金王》活動賽況排行及得獎名單 (8/16第四批名單公佈)[公告] 即日起,MIB也能變購物金囉![公告] 豐掌櫃《最佳銷售王》賽況排行 (6/15 得獎名單公佈)[公告] 痞客邦 PIXNET MIB(MONEY IN BLOG)部落格廣告分潤計劃申請流程調整

前一周多,小組內的同事碰到了客戶的新問題

對方提問咱家的產品是否有提供與AAA伺服器的服務

其實就是有無提供RADIUS伺服器認證

剛好我在上一家公司有做過相關部分的工作,所以就毛遂自薦嚕

環境如下:

1. Lenovo notebook with Ubuntu Linux(版本我忘了)充當RADIUS的伺服器,選用的是freeradius這個軟體

2. Dlink DI-427+ wireless router一台 (很爛,只有支援到WPA EAP的認證)

3. 遠端的隨便notebook with Windows XP一台充當client端

由於離上次架RADIUS的時間已經超過一年多了 囧rz,很多基本的東西都忘了

加上Ubuntu裡面有apt-get這個大魔鬼,所以很自然的就先apt-get install freeradius,八特.....

人算不人天算,學tarball起家的我,時間很不能接受時代變遷的新產品

過程除了產生很多build denpendency的問題(迷之聲: apt-get不是很強大,可以解掉相依性問題)

還有就是一些freeradius所用到的相關data base問題

最後乾脆全部移除,跑去下載了最新的freeradius tarball (在下用的是2.1.6版)

用土法煉鋼的方式,終於把伺服器架起來了

廢話不說,咱馬上進入正題

1. 上網下載freeradius,網址http://freeradius.org/download.html,小弟用的版號是2.1.6,不要跟我差太多版應該就還好

2. 解壓縮並切換到此目錄下 (以下#號開頭的皆為linux下root的權限,不習慣換到root的人請不要忘了加 sudo)

#tar zxvf freeradius-server-2.1.6.tar.gz (各位看官阿,指令、檔案名之間都有空格,不要像上次某人還跑過來問我:你的網誌上寫的都是騙人的 囧rz)

#cd freeradius-server-2.1.6

3. 產生makefile與開始編譯程式

#./configure (若這步驟有問題,請試試看後面加參數 --with-system-libtool,這要視你的error message去判斷,小弟是遇到libtool的問題)

#make

#make install

4. 編譯完之後,主要的幾個設定檔會放在系統目錄下 /usr/local/etc/raddb,若是不習慣的請自行在產生make檔案的時候去指定prefix

由於小弟沒有使用data base或其他的外掛模組,基本使用者就是系統上的使用者了,下面是幾個主要的設定檔案 (內容後面會貼上)

radiusd.conf: 最主要的設定檔案,設定此RADIUS伺服器是否有支援eap, sql, proxy等等等,小弟只是希望快速驗證,所以只有mark掉sql部分

clients.conf: client端的設定檔案,我AP的設定檔就寫在裡面了,沒有複雜的設定

eap.conf: 認證最重要的設定,舉凡tls, ttls等等,都在此設定

5. 產生伺服器憑證與客戶端憑證,這個是我搞最久的部分,google好多文章,最後trial and error才搞出來的,要產生憑證前先確認自己的linux上已經有裝好了openssl

#cd /usr/lib/ssl/misc/ (這個路徑是我電腦預設裝好的openssl的目錄,各位看官自行前往相對應的目錄)

#./CA.pl -newca (預設會在此目錄下產生一個名為demoCA的新目錄,裡面會有基本相關的檔案,若是想更名的,請自行修改CA.pl)

......(下來是一連串產生憑證的問答,只列出我有填寫且重要的部分,紅字部分為電腦提問,藍字是我自己填入的)

Enter PEM pass phrase: 12345 (自行輸入憑證密碼)

Country Name (2 letter code) [AU]:TW

State or Province Name (full name) [Some-State]:Taipei

Locality Name (eg, city) []:Taipei

Organization Name (eg, company) [Internet Widgits Pty Ltd]:SOD

Organizational Unit Name (eg, section) []:AV

Common Name (eg, YOUR name) []:Makoto

Email Address []:makoto@sod.com

6. 伺服器端認證檔案

#openssl req -new -nodes -keyout srv_key.pem -out srv_req.pem -config ../openssl.cnf (請注意openssl.cnf這個檔案,在小弟的電腦內此檔案位於/usr/lib/ssl/裡面)

#openssl ca -config ../openssl.cnf -policy policy_anything -out srv_cert.pem -infiles ./srv_req.pem

#cat srv_key.pem srv_cert.pem > srv_keycert.pem

7. 客戶端認證檔案,產生後請將cli_cert.pem複製到自己想要認證的電腦上面,點選右鍵->匯入憑證,這樣就可以了

#openssl req -new -keyout cli_key.pem -out cli_req.pem -config ../openssl.cnf

#openssl ca -config ../openssl.cnf -policy policy_anything -out cli_cert.pem -infiles ./cli_req.pem

#openssl pkcs12 -export -in cli_cert.pem -inkey cli_key.pem -out cli_cert.p12 -clcerts (此步驟為要轉成windows XP下可用的憑證檔案格式)

8. 產生兩個使用tls憑證需要用到的檔案

#openssl dhparam -check -text -5 512 -out dh

#dd if=/dev/urandom of=random count=2

9. 記得把上述的伺服器端檔案copy到/usr/local/etc/raddb/certs,因為freeradius內的設定檔預設憑證會放在這邊,若是想改到自己的喜歡的目錄下,請自行修改

10. 接下來編輯一下第四點所提到的三個檔案,小弟用的是tls憑證

radiusd.conf: (mark了三行,下面的紅色井字號為mark)

#$INCLUDE sql.conf

#INCLUDE sql/mysql/counter.conf

#$INCLUDE sqlippool.conf

clients.conf: (添加了下列幾行,192.168.1.1是小弟AP的IP位址,secret是密碼請自行設定)

client 192.168.1.1 {
        secret          = sodisgood
        shortname   = sod-ap
}

eap.conf: (修改了一些部分,並且添加了tls憑證部分)

default_eap_type = tls (原本是md5)

private_key_password = 12345 (產生憑證時輸入的密碼)

private_key_file = ${certdir}/srv_keycert.pem (當時後產生的伺服器憑證)

certificate_file = ${certdir}/server_keycert.pem (同上)

CA_file = ${cadir}/cacert.pem (這個檔案會在demoCA裡面)

dh_file = ${certdir}/dh (tls需要用到的檔案)

random_file = ${certdir}/random (同上)

11. 這時候可以啟動伺服器了,有問題的話請注意一下error message喔,每個人遇到的狀況不一定會相同

#radiusd -X & (-X是debug mode,&是背景執行)

12. 設定AP,這點也是端看各位使用的AP不同而會有所不同,所以我只說明大概的設定法,其他的請看倌自行設定了(請記得連接RADIUS伺服器電腦與AP)

登入AP設定網頁>>無線網路設定>>安全模式>>選擇WPA>>填入RADIUS伺服器的IP位址(看AP的資訊就有了)、連接埠(內建是1812)、RADIUS密碼(與在clients.conf裡面的要一致)

13. 在windows xp下直接用WZC去連接自己的AP,若一切都順利你會看到無線網路會顯示正在驗證你的憑證之類的訊息


以上........

呼~寫得有點亂,希望對有要架設RADIUS的人有所幫助

若是有人要分享更仔細的設定或是SSL的用法,請不吝指教^^

Posted by Life Nerd at 痞客邦 PIXNET Guestbook(18) 引用(29) 人氣()


open trackbacks list Trackbacks (29)

  • voyance gratuite amour

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • Ranking Of A Website

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • Google Position Checker

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • Seo Rank Checker

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • google rank checker

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • seo reporting tools

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • seo consultants

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::
  • bulk google backlink checker

    輕鬆架好RADIUS伺服器~ @ Memory :: 痞客邦 PIXNET ::

留言列表 (18)

Post Comment
  • justin
  • Ignoring EAP-Type/tls because we do not have OpenSSL support.
    Ignoring EAP-Type/ttls because we do not have OpenSSL support.
    Ignoring EAP-Type/peap because we do not have OpenSSL support.
    Module: Linked to sub-module rlm_eap_mschapv2
    Module: Instantiating eap-mschapv2
    mschapv2 {
    with_ntdomain_hack = no
    }
    rlm_eap: No such sub-type for default EAP type tls
    /usr/local/etc/raddb/eap.conf[17]: Instantiation failed for module "eap"
    /usr/local/etc/raddb/sites-enabled/inner-tunnel[223]: Failed to find module "eap".
    /usr/local/etc/raddb/sites-enabled/inner-tunnel[176]: Errors parsing authenticate section.
    Errors initializing modules
    出現以上error 請問你有遇過嗎?
  • tec1021
  • 你可以附上你的設定檔,這樣子比較有機會知道你的問題在哪?
  • Rex
  • 你好,在windows XP 做tls 認證,CA一直弄不好,有按照你的步驟,請問有那裡要注意的嗎?我用Funk Odyssey Client。謝謝。
  • audy
  • 您好,我的環境server為fc3,openssl是使用fc3內建的,radius部分與大大相同,使用freeradius-server-2.1.6
    wireless user是windows XP sp2

    設定部份是依照大大的設定,基本上算是有架起來,但是wireless user卻連不上去耶,我有抓封包來看發現wireless user在對radius server的憑證做確認時就沒辦法做確認了,不知是什麼原因呢???可以請大大幫忙解惑嗎???

    PS.有沒有可能是因為fc3內建的openssl版本比較舊的關係,所以產生的憑證沒辦法被wireless user確認呢???
  • audy
  • 您好,我的環境server為fc3,openssl是使用fc3內建的,radius部分與大大相同,使用freeradius-server-2.1.6
    wireless user是windows XP sp2

    設定部份是依照大大的設定,基本上算是有架起來,但是wireless user卻連不上去耶,我有抓封包來看發現wireless user在對radius server的憑證做確認時就沒辦法做確認了,不知是什麼原因呢???可以請大大幫忙解惑嗎???

    PS.有沒有可能是因為fc3內建的openssl版本比較舊的關係,所以產生的憑證沒辦法被wireless user確認呢???
  • CK
  • 我倒是出現在freeradius的問題,
    我有參考你的和http://www.linuxjournal.com/article/8151
    這篇的
    寫的大同小異,
    只是我的環境是ubuntu,
    所以安裝freeradius 我很懶的tar,
    都用apt-get install
    裝了2.10版,預設是mysql,
    把mysql改掉,安裝,的確可以work(通過radtest測試),但是想結合EAP_TLS or TTLS,
    就是一直卡在eap.conf這,
    錯誤訊息,我另外回一篇..
    惟一一個改的設定訊息如下,eap.conf,

    default_eap_type = tls
    其他設定都和你一樣...還是不行..不知道是什麼原因?XD
  • CK
  • 錯誤訊息如下

    Module: Linked to sub-module rlm_eap_md5
    Module: Instantiating eap-md5
    Module: Linked to sub-module rlm_eap_leap
    Module: Instantiating eap-leap
    Module: Linked to sub-module rlm_eap_gtc
    Module: Instantiating eap-gtc
    gtc {
    challenge = "Password: "
    auth_type = "PAP"
    }
    Ignoring EAP-Type/tls because we do not have OpenSSL support.
    Ignoring EAP-Type/ttls because we do not have OpenSSL support.
    Ignoring EAP-Type/peap because we do not have OpenSSL support.
    Module: Linked to sub-module rlm_eap_mschapv2
    Module: Instantiating eap-mschapv2
    mschapv2 {
    with_ntdomain_hack = no
    }
    rlm_eap: No such sub-type for default EAP type tls
    /etc/freeradius/eap.conf[17]: Instantiation failed for module "eap"
    /etc/freeradius/sites-enabled/inner-tunnel[223]: Failed to find module "eap".
    /etc/freeradius/sites-enabled/inner-tunnel[176]: Errors parsing authenticate section.
    }
    }
    Errors initializing modules
  • 緣份
  • 只要安裝完
    執行./radiusd -X
    就會產生 server需要的pem檔了!!
  • 訪客
  • 再來個UPDATe
    參考連結如下
    http://jicknan.blogspot.com/2007/09/ldlibrarypath.html

    重點 再以下這句

    目前,Linux 通用的做法是将非标准路经加入 /etc/ld.so.conf,然后运行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加载共享库的时候,会从
    ld.so.cache 查找。

    其實 安裝freeradius 在build好 以後就有講出答案了

    Installing dictionary files in /usr/local/share/freeradius
    /usr/src/freeradius-server-2.1.11/libtool --finish /usr/local/lib
    PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
    ----------------------------------------------------------------------
    Libraries have been installed in:
    /usr/local/lib

    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the `-LLIBDIR'
    flag during linking and do at least one of the following:
    - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
    during execution
    - add LIBDIR to the `LD_RUN_PATH' environment variable
    during linking
    - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
    - have your system administrator add LIBDIR to `/etc/ld.so.conf'


  • eap 认证没有通过
  • 您好。我用: ( echo "User-Name = \"radiususer\""; echo "Cleartext-Password = \"it580.com\""; echo "EAP-Code = Response"; echo "EAP-Id = 210"; echo "EAP-Type-Identity = \"dial\""; echo "Message-Authenticator = 0×00"; ) | /usr/local/freeradius/bin/radeapclient -x 127.0.0.1 auth testing123
    方式验证eap的时候,总是不能通过,下面是验证结果。

    Sending Access-Request packet to host 127.0.0.1 port 1812, id=202, length=0
    User-Name = "radiususer"
    Cleartext-Password = "it580.com"
    EAP-Code = Response
    EAP-Id = 210
    EAP-Type-Identity = "dial"
    Message-Authenticator = 0x30a1c13030
    EAP-Message = 0x02d20009016469616c
    rlm_eap: EAP-Message not found
    Received Access-Reject packet from host 127.0.0.1 port 1812, id=202, length=20

    麻烦帮忙分析一下,非常感谢。
  • SJ
  • pls Help(sj_yang@ms26.url.com.tw)


    Module: Linked to sub-module rlm_eap_md5
    Module: Instantiating eap-md5
    Module: Linked to sub-module rlm_eap_leap
    Module: Instantiating eap-leap
    Module: Linked to sub-module rlm_eap_gtc
    Module: Instantiating eap-gtc
    gtc {
    challenge = "Password: "
    auth_type = "PAP"
    }
    Ignoring EAP-Type/tls because we do not have OpenSSL support.
    Ignoring EAP-Type/ttls because we do not have OpenSSL support.
    Ignoring EAP-Type/peap because we do not have OpenSSL support.
    Module: Linked to sub-module rlm_eap_mschapv2
    Module: Instantiating eap-mschapv2
    mschapv2 {
    with_ntdomain_hack = no
    send_error = no
    }
    rlm_eap: No such sub-type for default EAP type ttls
    /usr/local/etc/raddb/eap.conf[17]: Instantiation failed for module "eap"
    /usr/local/etc/raddb/sites-enabled/default[310]: Failed to find "eap" in the "modules" section.
    /usr/local/etc/raddb/sites-enabled/default[252]: Errors parsing authenticate section.
  • Ava
  • Thank you for your Radius instructions. It is really helpful.
    However, here I met a problem:
    -- rlm_eap: No such sub-type for default EAP type tls --
    It prevents me loading the EAP modules.
    Do you have any idea of this?
    Thanks
  • Eason Chen
  • 不好意思 我想請問一下幾個問題 目前我的進度是已經架好radius了
    我目前環境只有1.radius server(mac) 2.市售asus fat ap

    因為我看到您的環境有Dlink DI-427+ wireless router一台

    請問asus fat ap可以用來代替嗎??

    我現在卡在fat ap如何與radius溝通

    謝謝
  • 訪客
  • 請問一下 為什麼我無法驗證成功
    我也是在windows xp 用TLS 憑證來驗證 產生方式跟你一樣
    卻出現這樣問題
    WARNING: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    WARNING: !! EAP session for state 0xb1c1236eb2682ee8 did not finish!
    WARNING: !! Please read http://wiki.freeradius.org/Certificate_Compatibility
    WARNING: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    這問題要如何解決
  • Andrew Wong
  • 回樓上, 這問題可能有不同原因.

    建議先用手機連看看. 我的情況是用手機可以連上, 但Windows 7 不行. 跟你的Error 一樣.

    最後, 我在Windows 7 自行安裝數位證書才能解決問題. 現在可以使用了.
  • 訪客
  • 請問有人試過用 ubuntu 12.04 手動build的wpa_supplicant 來做連線嗎?
    因為我一直認證失敗 不知道是憑證有問題 還是套件有問題 有沒有人可以提供成功的案例?? 謝謝!!
  • 訪客
  • Ignoring EAP-Type/tls because we do not have OpenSSL support.
    Ignoring EAP-Type/ttls because we do not have OpenSSL support.
    Ignoring EAP-Type/peap because we do not have OpenSSL support.
    遇到這種問題的,有兩個建議
    1. 請安裝libssl-dev 並且 remake reinstall freeradius(網路上這樣說 可是我沒有成功)
    2. 假如安裝libssl-dev 還沒有用 請改成freeradius 2.1.8 ,我用2.1.6 都不成功改成2.1.8 同樣的方法就成功了。