Shunze 學園 >電腦資訊學系 >吃軟不吃硬 > 《分享》Freeradius與OpenSSL憑證 哈囉,還沒有註冊或者登入。請你[註冊|登入]
« 上一篇主題 下一篇主題 » 顯示成列印模式 | 增加到我的最愛
發表新主題 發表回覆
作者
主題
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2343

shunze 離線
《分享》Freeradius與OpenSSL憑證引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

最近在測試Freeradius上的各種EAP認證機制。
Freeradius上支援了EAP-MD5、LEAP、EAP-TLS、EAP-TTLS及EAP-PEAP等多種EAP常見認證協定,
除了預設的EAP-MD5少了相互認證制(Mutual Authentication),其它4種機制都支援相互認證。
而EAP-TLS、EAP-TTLS及EAP-PEAP這三種機制,更需要憑證來進行資料加密傳輸驗證。
那麼在安裝FreeRadius的Ubuntu上,是如何產生這些憑證呢?


其實在Ubuntu 14.04上安裝好Freeradius後,只要下達 freeradius -X 指令,
系統就會於 /etc/freeradius/certs 目錄下,透過bootstrap檔案中的script來建立預設的snake oil憑證供使用者進行測試。

若我們想要建立自己的憑證,可參考下圖了解憑證世界中的物件關聯,透過內建的OpenSSL來進行。


↑有沒有發垷client和server的申請流程是完全相同的!?

  • 準備好OpenSSL的工作環境
    在Freeradius中,其憑證目錄是定義在 /etc/freeradius/eap.conf 檔案中,
    預設為 /etc/freeradius/certs 路徑下。
    (測試的snake oil憑證也是放置於此。)



    為了工作方便,以下的憑證相關操作環境將切換到此路徑下;
    建立憑證時,直接產生憑證於此目錄中,對應到Freeradius的需求,省去搬移的麻煩。

    在進行以下操作前,請先將此certs目錄清空,或搬移備份到別處。

  • 建置自己CA
    Freeradius中內建了三個預設組態範例檔ca.cnf、server.cnf、client.cnf,
    這些組態檔統一放在 /usr/share/doc/freeradius/examples/certs 目錄中。

    在建置自己的CA上,我們除了可透過互動式問答,逐一輸入CA內容外;
    也可以透過組態檔ca.cnf來進行設定。

    透過ca.cnf組態檔來建置CA時,
    建議先把 /usr/share/doc/freeradius/examples/certs 目錄中的ca.cnf,複製一份到 /etc/freeradius/certs 目錄中,
    然後切換工作目錄到 /etc/freeradius/certs 下,再對ca.cnf進行參數編輯,
    加入自己組織單位的資訊,做為憑證的內容。


    ↑其中的input_password就是CA的pass phrase,這個密碼在每次讀取ca.key時,都會要求輸入。

    接著透過以下指令來產生CA的private key與ca憑證ca.pem。
    openssl req -new -x509 -keyout ca.key -out ca.pem -config ./ca.cnf



    若上述指令不帶入參數 -config,則不會去讀取組態檔ca.cnf的內容設定來做為憑證內容。
    所有建立CA憑證所需要的組織單位與pass phrase等資訊,都要透過互動式問答,一個一個輸入∼


    哪一個比較好?
    其實效果都一樣,無所謂好壞,看個人習慣。
    但若有ca.cnf設定檔,在日後維護上會比較清楚CA的相關內容。

    另外,憑證有多種格式pem,crt,cer...等,
    因為Freeradius預設是吃pem格式憑證,所以在本文的指令中,一律產生pem格式憑證。
    若需要其它格式憑證,請自己修改建立憑證指令的 out 附檔名格式。

  • 建立server的憑證
    CA建立後,接下來就要向CA申請Freeradius所需要的憑證了。

    要先CA申請憑證,首先要建立server自己的private key,可透過以下指令來進行。
    openssl genrsa -des3 -out server.key 1024


    ↑這堛歉ass phrase密碼就是server的private key的密碼。這個密碼在每次讀取server.key時,都會要求輸入。

    請注意:
    雖然在本例中,CA跟Freeradius是同一台主機,但兩者在意義上是不同的。
    CA是做為憑證中心,而Freeradius則是做為前端需求者(Server),向CA申請憑證,
    CA有CA自己的private key,Server有Server自己的private.key,
    而每一支key都會有自己的pass phrase密碼,兩者不要搞混喔!


    Freeradius的server.key建立後,接著透過此private key建立csr檔,準備向CA申請憑證。
    產生server.csr檔就跟ca憑證一樣,可透過組態設定檔server.cnf來產生,也可透過互動問答來建立。

    透過組態設定檔的方式如下。
    先複製一份server端的組態設定範例server.cnf到現在的工作目錄,然後再編輯工作目錄下的server.cnf設定檔。
    cp /usr/share/doc/freeradius/examples/certs/server.cnf /etc/freeradius/certs/server.cnf


    ↑設定檔內的input_password,要輸入剛才建立server.key時所輸入的pass phrase密碼喔。

    然後下達以下指令,建立server端的csr檔,server.csr。
    openssl req -new -key server.key -out server.csr -config ./server.cnf



    若上述指令不帶入參數 -config,則變成透過互動式問答,依提示來逐一輸入csr相關資訊。
    openssl req -new -key server.key -out server.csr


    ↑建立server端csr一開始就會跟你要private key的pass phrase密碼,這密碼就是建立server.key時所輸入的密碼喔!

    Server端的csr檔建立後,就可以以此檔案向CA申請憑證。
    不過CA端還有工作未完成,直接建立憑證的話,可是會報錯的!

    CA端還有哪些工作要做呢?
    檢視設定檔ca.cnf,我們發現還有crl目錄與index.txt、serial檔案要建立。



    我們可透過以下指令來建立目錄及檔案。
    mkdir crl
    touch index.txt
    echo 01 > serial


    CA端的環境需求補足後,再透過以下指令以server.csr向CA申請憑證就不會報錯了。
    openssl ca -in server.csr -out server.pem -cert ca.pem -keyfile ca.key -config ./ca.cnf


    ↑這是以是CA的角色來下指令,所以讀取CA的private key來核發server的憑證時,要輸入的pass phrase密碼是CA的密碼!

    到這邊,server端的憑證申請就大功告成囉∼
    不過以Freeradius來說,它的憑證機制媮棡搨ndh與random這兩個檔案。



    這部分可透過以下指令來建立這兩個檔案。
    openssl dhparam -check -text -5 512 -out dh
    dd if=/dev/urandom of=random count=2

    補足必要檔案後,Freeradius在運作上才不會報錯。

    還有就是我們已經建立自己的憑證了,
    若建立server.key時,不是採用預設的密碼 whatever 的話,
    在eap.conf tls 區段內的 private_key_password 也要修改為你建立server.key時所設定的pass phrase密碼才行喔!

    最後,我們已經建立好自己憑證了,
    Freeradius上產生預設snake oil憑證的設定就不需要了。
    查看一下eap.conf堙Atls 區段內的 make_cert_command = "${certdir}/bootstrap" 這一行是否已註解掉。
    若未註解掉,請記得把它註解掉喔!

  • 建立client的憑證
    Client端憑證的申請流程,其實和Server端的是完全相同的。


    同樣可透過組態設定檔client.cnf或互動式問答兩種方式來建立。
    Client端一樣有其private key及其pass phrase密碼,用來驗證你是否為合法持有;
    然後透過此key建立client.csr,再向CA提出憑證申請。
    這部分就不重覆說明了。

    當你的Freeradius是採用TTLS及PEAP的話,是不需要此client端憑證。
    但若採用的是TLS的EAP的話,就要建立此憑證,然後轉發給使用者安裝,
    這樣EAP-TLS的雙向驗證才會通過。

    若前端使用者是Windows或Android手機,需要P12格式的憑證,可以透過以下指令轉出。
    openssl pkcs12 -export -in client.pem -inkey client.key -out client.p12


    ↑轉出時會先要client.key的pass phrase密碼進行確認,再建立P12的Export Password,做為XP匯入憑證時驗證使用。


參考資料
SSL概念与openssl的安装
Production Certificates
OpenSSL - 金鑰與憑證的管理
使用 freeRadius 設置 802.1X 認證環境(三)EAP-TLS篇



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2015-06-08, 22:00 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2343

shunze 離線
《分享》OpenSSL問題與處理引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

OpenSSL問題與處理方式整理如下

  • commonName不可重覆!
    憑證間的識別是以commonName來區分。
    所以不論是CA或是前端申請的server/client,其commonName是不可以相同的。
    在規劃架構時,請務必注意此點。

  • 向CA申請憑證時,出現“The stateOrProvinceName field needed to be the same in the…”錯誤?
    明明CA與Server在建立時,stateOrProvinceName 都是打一樣一樣的Taipei,為什麼申請憑證還會報錯?



    若CA與Server的相關檔案在建立時,都是透過組態設定檔cnf來進行;
    或是都不透過組態設定檔,全部都是由一問一答的透過互動問答來建立憑證,
    基本上是不會出現此錯誤的。

    但若其中一個是透過組態檔來建立,而另一個是透過互動問答來建立,
    那麼就有相當高的機率會出現此錯誤。

    差別在於透過互動式問題來建立憑證資料時,參考的是 /usr/lib/ssl/openssl.cnf 檔案堛滌捊く]定,
    而此設定檔內容與Freeradius提供的那三個設定檔內容在參數上有些差異,
    所以導致錯誤發生。

    解決方式有二,
    1. 在 /usr/lib/ssl/openssl.cnf 堙A將 [ req ] 區段堸捊 string_mask 的內容由 utf8only 改為 pkix
      然後重新產生憑證。
    2. 在所有的組態設定檔中,於 [ req ] 區段堙A均加上參數 string_mask,值為 utf8only 的內容,
      然後重新產生憑證。

    兩者只要擇一來做即可,
    基本上就是讓參數內容一致化,在建立憑證時,就不會出現不一致的錯誤了。

  • 向CA申請憑證時,出現TXT_DB的錯誤!


    會出現這個TXT_DB的錯誤是因為OpenSSL一次只能處理一個憑證的申請。
    我不知道這算不算是bug?

    處理方法很簡單,
    只要刪掉index.txt檔,然後再產生一個新的,無任何資料的index.txt就可以再建立憑證。

  • Private key的驗證密碼其實是可以去除的?
    不論ca.key或是server.key、client.key,
    任何一種私有金鑰去讀取時都需要輸入pass phrase密碼來確認你是否合法持有此私有金鑰。

    若要去除此密碼,可以透過以下指令來進行。
    openssl rsa -in XXXXX.key -out XXXXX.key

    操作時,還是要先輸入一次密碼,確認你是合法持有。
    密碼確認過,完成操作後,私有金鑰的密碼消除了。

  • 若沒有CA,可否建立自我簽署憑證?
    若沒有CA,也不想自建CA,
    在建立csr後,其實可以透過以下指令來建立自我簽署憑證。
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.pem


  • 檢視憑證內容
    若要檢視憑證的內容,確證發放資訊,可透過以下指令來進行。
    openssl x509 -text -in 要檢視的憑證檔名 -noout


  • 如何憑證有效日期的設定?
    雖然在組態檔中,明明有兩個參數 default_daysdefault_crl_days 看似是對應憑證的有效日期,
    但順子不管怎麼調整設定都沒用,無法發生效果?
    憑證的有效日期還是回歸命令的參數設定比較簡單。

    於產生憑證的指令中,加上參數 days,再帶上想要的有效期日數即可。
    例如產生一個有效日期十年的CA憑證,指令如下。
    openssl req -new -x509 -days 3650 -keyout ca.key -out ca.pem -config ./ca.cnf

    其它server,client的憑證比照辦理。

  • 憑證類型轉換
    1. DER file (.crt .cer .der) to PEM
      openssl x509 -inform der -in XXXXX.der -out XXXXX.pem

    2. PEM file to DER
      openssl x509 -outform der -in XXXXX.pem -out XXXXX.der

    3. PEM file to PKCS#12 (.pfx .p12)
      openssl pkcs12 -export -out XXXXX.pfx -inkey XXXXX.key -in XXXXX.pem

    4. PKCS#12 file (.pfx .p12) to PEM
      openssl pkcs12 -in XXXXX.pfx -out XXXXX.pem

      pfx/p12轉PEM時,有如下參數可用。
      -nodes 轉出PEM,不加密;
      -nokeys 僅轉出PEM,不帶private key;
      -nocert 僅轉出private key,不帶憑證。當然轉出的副檔名要改為key。


參考資料
The Most Common OpenSSL Commands



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2015-06-09, 21:35 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
shunze
工友伯伯


註冊日期: 2002 04
來自: 潮汐終止之地
文章: 2343

shunze 離線
《分享》Freeradius上三種憑證模式設定與調整引用回覆 編輯/刪除文章 搜尋由  發表的其他文章 回報給版主 IP 位置 回此頁最上方

在Freeradius上支援了PEAP/TTLS/TLS三種經由憑證來驗證的EAP模式,
其中PEAP及TTLS只需要server端的憑證,不需要client的憑證做雙向認證,因此client端還是需要透過帳號/密碼來驗證使用者;
而TLS則同時需要server與client端的憑證,也因為client端已透過憑證驗證,所以不需要再輸入帳號/密碼來驗證使用者。

在Freeradius上,憑證的相關設定是定義在 /etc/freeradius/eap.conf 檔案的 tls 區段中,
這是三種憑證EAP機制都會套用到的共通設定。



如果您有依順子的示範自建憑證於對應目錄下,基本上 tls 區段中的憑證設定不用再修改,
但如果有修改名稱或路徑,請依實際環境進行調整。


由於Win7上順子找不到802.1X的TTLS相關設定,所以以下測試的前端環境,統一採用Andorid手機來進行;
而NAS端則使用Enterasys Thin AP來架設802.1X的驗證環境。






接下我們來看看Freeradius上,三種EAP模式的個別設定與測試。

  • PEAP
    Freeradius上EAP的類型是在eap.conf中的參數 default_eap_type 來設定,預設值是 md5
    要採用PEAP驗證,第一步自然是把此 default_eap_type 的值修改為 peap

    而eap.conf中的 peap 區段,設定了參數 default_eap_type 的值是較安全的 mschapv2
    所以我們也要去 /etc/freeradius/module 目錄下,修改檔案 mschap 的內容,
    取消了部份註解與修改參數值,將內容修改如下。
    use_mppe = yes
    require_encryption = yes
    require_strong = yes
    with_ntdomain_hack = yes

    然後透過以下指令,重新載入libray內容。
    ldconfig

    完成後,啟動Freeradius -X,我們可以開始測試了。

    Android手機連結此SSID,設定進階選項的EAP方法為 PEAP
    階段2驗證為 MSCHAPV2 開始連線了。



    Freeradius出現以下訊息,PEAP驗證成功,手機成功拿到DHCP IP,正常上網∼
    rad_recv: Access-Request packet from host 192.168.33.37 port 57067, id=135, length=134
    User-Name = "shunze"
    NAS-IP-Address = 172.18.18.253
    NAS-Port = 106
    Framed-MTU = 1400
    Called-Station-Id = "20:b3:99:6b:4f:f9"
    Calling-Station-Id = "a8:a6:68:7a:da:43"
    NAS-Port-Type = Wireless-802.11
    NAS-Identifier = "Radius_Auth"
    EAP-Message = 0x0200000b017368756e7a65
    Message-Authenticator = 0x0e07734bffc82436bd89f93bcb087c5e
    # Executing section authorize from file /etc/freeradius/sites-enabled/default
    ...
    Found Auth-Type = EAP
    # Executing group from file /etc/freeradius/sites-enabled/default
    +- entering group authenticate {...}
    [eap] Request found, released from the list
    [eap] EAP/peap
    [eap] processing type peap
    [peap] processing EAP-TLS
    TLS Length 198
    [peap] Length Included
    [peap] eaptls_verify returned 11
    [peap] (other): before/accept initialization
    [peap] TLS_accept: before/accept initialization
    [peap] <<< TLS 1.0 Handshake [length 00c1], ClientHello
    [peap] TLS_accept: SSLv3 read client hello A
    [peap] >>> TLS 1.0 Handshake [length 0039], ServerHello
    [peap] TLS_accept: SSLv3 write server hello A
    [peap] >>> TLS 1.0 Handshake [length 06fb], Certificate
    [peap] TLS_accept: SSLv3 write certificate A
    [peap] >>> TLS 1.0 Handshake [length 00cb], ServerKeyExchange
    [peap] TLS_accept: SSLv3 write key exchange A
    [peap] >>> TLS 1.0 Handshake [length 0004], ServerHelloDone
    [peap] TLS_accept: SSLv3 write server done A
    [peap] TLS_accept: SSLv3 flush data
    [peap] TLS_accept: Need to read more data: SSLv3 read client certificate A
    In SSL Handshake Phase
    In SSL Accept mode
    [peap] eaptls_process returned 13
    [peap] EAPTLS_HANDLED
    ++[eap] returns handled

    ...
    [eap] Request found, released from the list
    [eap] EAP/peap
    [eap] processing type peap
    [peap] processing EAP-TLS
    [peap] eaptls_verify returned 7
    [peap] Done initial handshake
    [peap] eaptls_process returned 7
    [peap] EAPTLS_OK
    [peap] Session established. Decoding tunneled attributes.
    [peap] Peap state send tlv success
    [peap] Received EAP-TLV response.
    [peap] Success
    [eap] Freeing handler
    ++[eap] returns ok


  • TTLS
    要改用TTLS來驗證,同樣在eap.conf中,將參數 default_eap_type 的值改為 ttls
    而eap.conf中的 ttls 區段的參數 default_eap_type 值預設是較不安全的 md5,我們一樣調整為mschapv2
    完成後,啟動Freeradius -X,我們可以開始測試了。

    Android手機連結此SSID,設定進階選項的EAP方法為 TTLS
    階段2驗證維持剛才的 MSCHAPV2 即可,開始連線測試了。



    Freeradius出現以下訊息,TTLS驗證成功,手機成功拿到DHCP IP,正常上網∼
    rad_recv: Access-Request packet from host 192.168.33.37 port 52171, id=163, length=134
    User-Name = "shunze"
    NAS-IP-Address = 172.18.18.253
    NAS-Port = 106
    Framed-MTU = 1400
    Called-Station-Id = "20:b3:99:6b:4f:f9"
    Calling-Station-Id = "a8:a6:68:7a:da:43"
    NAS-Port-Type = Wireless-802.11
    NAS-Identifier = "Radius_Auth"
    EAP-Message = 0x0212000b017368756e7a65
    Message-Authenticator = 0xe9185514f50cfb7ba8eb818a28348c99
    # Executing section authorize from file /etc/freeradius/sites-enabled/default
    ...
    # Executing group from file /etc/freeradius/sites-enabled/default
    +- entering group authenticate {...}
    [eap] Request found, released from the list
    [eap] EAP/ttls
    [eap] processing type ttls
    [ttls] Authenticate
    [ttls] processing EAP-TLS
    [ttls] eaptls_verify returned 7
    [ttls] Done initial handshake
    [ttls] (other): before/accept initialization
    [ttls] TLS_accept: before/accept initialization
    [ttls] <<< TLS 1.0 Handshake [length 00c1], ClientHello
    [ttls] TLS_accept: SSLv3 read client hello A
    [ttls] >>> TLS 1.0 Handshake [length 0039], ServerHello
    [ttls] TLS_accept: SSLv3 write server hello A
    [ttls] >>> TLS 1.0 Handshake [length 06fb], Certificate
    [ttls] TLS_accept: SSLv3 write certificate A
    [ttls] >>> TLS 1.0 Handshake [length 00cb], ServerKeyExchange
    [ttls] TLS_accept: SSLv3 write key exchange A
    [ttls] >>> TLS 1.0 Handshake [length 0004], ServerHelloDone
    [ttls] TLS_accept: SSLv3 write server done A
    [ttls] TLS_accept: SSLv3 flush data
    [ttls] TLS_accept: Need to read more data: SSLv3 read client certificate A
    In SSL Handshake Phase
    In SSL Accept mode
    [ttls] eaptls_process returned 13
    ++[eap] returns handled

    ...
    [eap] Request found, released from the list
    [eap] EAP/ttls
    [eap] processing type ttls
    [ttls] Authenticate
    [ttls] processing EAP-TLS
    [ttls] Received TLS ACK
    [ttls] ACK handshake is finished
    [ttls] eaptls_verify returned 3
    [ttls] eaptls_process returned 3
    [ttls] Using saved attributes from the original Access-Accept
    [eap] Freeing handler
    ++[eap] returns ok


  • TLS
    最後來測試TTLS驗證吧!
    同樣在eap.conf中,將參數 default_eap_type 的值改為 tls
    然後我們可以開始測試了。

    Android手機連結此SSID,設定進階選項的EAP方法為 TLS
    但CA憑證與使用者憑證我們先不裝,看看能否測試通過。



    rad_recv: Access-Request packet from host 192.168.33.37 port 54076, id=30, length=134
    User-Name = "shunze"
    NAS-IP-Address = 172.18.18.253
    NAS-Port = 106
    Framed-MTU = 1400
    Called-Station-Id = "20:b3:99:6b:4f:f9"
    Calling-Station-Id = "a8:a6:68:7a:da:43"
    NAS-Port-Type = Wireless-802.11
    NAS-Identifier = "Radius_Auth"
    EAP-Message = 0x0200000b017368756e7a65
    Message-Authenticator = 0xe78b4aeb0b76411adef3543ecbe073b5
    # Executing section authorize from file /etc/freeradius/sites-enabled/default
    ...
    +- entering group authenticate {...}
    [eap] EAP Identity
    [eap] processing type tls
    [tls] Requiring client certificate
    [tls] Initiate
    [tls] Start returned 1
    ++[eap] returns handled

    ...
    Failed to authenticate the user.
    Using Post-Auth-Type Reject
    # Executing group from file /etc/freeradius/sites-enabled/default
    +- entering group REJECT {...}
    [attr_filter.access_reject] expand: %{User-Name} -> shunze
    attr_filter: Matched entry DEFAULT at line 11
    ++[attr_filter.access_reject] returns updated

    由於缺少client端憑證,所以TLS驗證失敗了...
    我們在Android手機上安裝好CA與client端憑證後,再次測試能否順利驗證通過。



    rad_recv: Access-Request packet from host 192.168.33.37 port 59770, id=79, length=134
    User-Name = "shunze"
    NAS-IP-Address = 172.18.18.253
    NAS-Port = 106
    Framed-MTU = 1400
    Called-Station-Id = "20:b3:99:6b:4f:f9"
    Calling-Station-Id = "a8:a6:68:7a:da:43"
    NAS-Port-Type = Wireless-802.11
    NAS-Identifier = "Radius_Auth"
    EAP-Message = 0x0200000b017368756e7a65
    Message-Authenticator = 0xf21bc7784597c4b5d357ab4438d95238
    # Executing section authorize from file /etc/freeradius/sites-enabled/default
    ...
    # Executing group from file /etc/freeradius/sites-enabled/default
    +- entering group authenticate {...}
    [eap] EAP Identity
    [eap] processing type tls
    [tls] Requiring client certificate
    [tls] Initiate
    [tls] Start returned 1

    ...
    [eap] Request found, released from the list
    [eap] EAP/tls
    [eap] processing type tls
    [tls] Authenticate
    [tls] processing EAP-TLS
    [tls] Received TLS ACK
    [tls] ACK handshake is finished
    [tls] eaptls_verify returned 3
    [tls] eaptls_process returned 3
    [tls] Adding user data to cached session
    [eap] Freeing handler
    ++[eap] returns ok

    測試結果,
    果然TLS確實是需要server與client端,雙向憑證進行互相驗證才會通過!


參考資料
Wire-less PEAP
Configuring PEAP authentication with FreeRADIUS
802.1X認證+無線AP(Access Point)+FreeRadius Server
使用 freeRadius 設置 802.1X 認證環境(三)EAP-TLS篇
FreeRADIUS Installation on Ubuntu
輕鬆架好RADIUS伺服器~
USING A RADIUS SERVER ON UBUNTU 14.04 FO... AUTHENTICATION



♥順子老婆的網拍,請多關照∼

If you don't like something, change it.
If you can't change it, change your attitude.
Don't complain!




2015-06-10, 14:18 shunze 的個人資料 把 shunze 加入好友列表 發送Email給 shunze 瀏覽 shunze 的網站 MSN : shunze@gmail.com
  « 上一篇主題 下一篇主題 »
發表新主題 發表回覆
跳到:

Powered by: Burning Board 1.1.1 2001 WoltLab GbR