要開始架設 XOOPS 網站前,必需先要有一個可以讓 PHP 運行的平台,Apache 是最著名的平台之一,Apache? XOOPS?怎麼這麼多平台呢?到底什麼是 Apche? 什麼是 XOOPS 呢?用最普通的說法來解釋的話,Apache 就像是 Windows XP/ Vista/ Win 7,而 XOOPS 就像是 MS Office 了。至於 XOOPS 的模組, 就好像是 MS Office 中的 Word,Excel, Power Point. 這樣的說明可以清楚這之間的關係了吧!

  要架設這個平台最方便、最簡單的方法是到 AppServNetwork 去下載已經打包好的軟體去安裝. 「AppServ」它是一個三合一的包裝,包含了「Apache」、「MySQL」、「PHP」,安裝的方法十分簡單, 就和一般軟體安裝沒有兩樣。

  本站使用的AppServ平台版本如下, 可以到下方的網址下載.

AppServ 2.5.10

  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3

Download
Sourceforge.net :
http://prdownloads.sourceforge.net/appserv/appserv-win32-2.5.10.exe?download

  下載下來的軟體 appserv-win32-2.5.10.exe 只要跟著預設值「I Agree」、「Next」...就可以安裝完成了。首先您會看到的是要安裝在電腦的那一個路徑, 這裡使用預設值就可以了。

apachePatch.png  

要安裝的軟體, 請全部都打勾, 其中 phpMyAdmin 是來管理 MySQL 的工具, 可以讓您用 IE / FireFox 流覽器就可以管理您的 MySQL 資料庫了.

apacheService.png  

安裝的過程中, 重要的只有兩個, 一是 Apache 的「Server Name」 , 您若不知道可以輸入localhost , 至於管理者的郵件信箱可以使用您自己的, 若沒有的話, 可以上 gmail.com 去申請一個免費的信箱.

apache.png  
  

另外一個則是 MySQL 的密碼, 「Enter root password」和「Re-enter root password」欄位,請輸入相同的密碼,這將會是root系統管理員管理資料庫時的密碼,請勞記。在「Character Sets and Collations」請選擇編碼為「UTF-8 Unicode」, 因為現在的網站的編碼都慢慢轉為 UTF-8 , MySQL 資料庫的編碼也相同時, 就不需要考慮編碼轉換的問題了。

mysql.png  

安裝完後, 可以在「開始」功能表中找到「 AppServ」 的目錄, 可以用來啟動或停止 Apache 或者 MySQL 服務. 一般來說, 若是 Windows 平台的話, 它會自動在 「服務」 中自動建立 Apache 及  MySQL 服務.

apacheControl.png  
  

最後, 打開 IE 或者 FireFox 在網址列輸入 http://localhost 若能看到下圖, 就代表安裝成功了.

apacheHome.png  

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

從這幾篇文章:Certificate Authority(CA) 憑證簡介AppServ + OpenSSL Setup SSL(https) in Win32 憑證建立Generating Private Key with OpenSSL 建立主機私有憑證 我們大致可以瞭解憑證的概念與建立的過程,,我們可謂已經擁有了自己一 把私鑰 private keyserver-privatekey.pem)以及一份由Sinica CA所簽發出來的公鑰 certificateserver-publickey.cer)。以下接著將介紹使用private key與 certificate的基本應用,包括:文件加密(Encrypt)與解密 (Decrypt)、文件簽章(Sign Signature)與驗證簽章(Verify Signature)等應用。

 現在就來作一個簡單的測試,模擬在網路實務上的運用過程。測試旳步驟如下:

1. 自行建立CA (ca.key、ca.crt)
2. 建立 Private Key
3. 建立 Certificate Request(憑證要求)
4. 將 Certificate Request 送交 CA 來簽證此憑證
5. 建立一個測試檔案:certkey-test.txt 內容為 "this is 測試",並由對方經我方傳給他的公鑰 certificateserver-publickey.cer)作加密,存成加密檔:certkey-test.msg。
6. 作解密測試。

相對應的指令如下:

step 1:
genrsa -out ca.key 1024
req -new -x509 -days 3650 -key ca.key -out ca.crt -config ../conf/openssl.cnf

step 2:
genrsa -out server-privatekey.pem 1024
rsa -in server-privatekey.pem -inform pem -out server-privatekey.der -outform der

step 3:
req -new  -inform pem -in server-privatekey.pem -out server-publickey.csr -key server-privatekey.pem -config ../conf/openssl.cnf

step 4:
ca -in server-publickey.csr -out server-publickey.cer -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

setp 5:
smime -encrypt -in certkey-test.txt -out certkey-test.msg server-publickey.cer

加密後的檔案內容會像下面這樣

MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
Content-Transfer-Encoding: base64

MIIBegYJKoZIhvcNAQcDoIIBazCCAWcCAQAxggElMIIBIQIBADCBiTCBgzELMAkG
A1UEBhMCVFcxDzANBgNVBAgTBlRhaXdhbjELMAkGA1UEBxMCVFoxCzAJBgNVBAoT
AkdVMQwwCgYDVQQLEwNNSVMxFzAVBgNVBAMTDkNBIFJvb3QgQ2VudGVyMSIwIAYJ
KoZIhvcNAQkBFhNwb2xpbi53ZWlAZ21haWwuY29tAgEDMA0GCSqGSIb3DQEBAQUA
BIGA6lONXzR5PWSn1I7pJElitlQCMtVu2I1ikeC1TaaJvasvc9xb70mDLoV1tER0
P8fdI3ZRHflq3eOPJui19B6SlT6/o8BjPAb25mZUNVYlhZUSH4Vj0wmUk6UiJ868
rF3cBG9gYfdP3XLaXawvRC3fkZ6f33t+i2jMDGiKjljasIYwOQYJKoZIhvcNAQcB
MBoGCCqGSIb3DQMCMA4CAgCgBAgMmcm0JJTP9IAQIP0ReJQ06MOWD7tc+fMddw==

 

step 6:
smime -decrypt -in certkey-test.msg -recip server-publickey.cer -inkey server-privatekey.pem
或者
smime -decrypt -in certkey-test.msg -recip server-publickey.cer -inkey server-privatekey.der -keyform der

 

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

這一篇文章主要是利用 OpenSSL 來建立主機私有憑證(Private Key),OpenSSL 的工具可以參考 AppServ + OpenSSL Setup SSL(https) in Win32 憑證建立 來快速取得,接下來的指令 "openssl genrsa" 將會產生四種不同類型的私有憑證(Private Key):

1. PEM 編碼, 沒有加密 (PEM encoding, no encryption)
2. DER 編碼, 沒有加密 (DER encoding, no encryption)
3. PEM 編碼, 以 DES 演算法作加密 (PEM encoding, DES encryption)
4. DER 編碼, 以 DES 演算法作加密 (DER encoding, DES encryption)

實作如下:

1.  產生主機私有憑證(Private Key),PEM 編碼, 沒有加密
OpenSSL> genrsa -out server-privatekey.pem 1024
Loading 'screen' into random state - done
Generating RSA private key, 1024 bit long modulus
......++++++
.................++++++
e is 65537 (0x10001)

2. 以產生好的 server-privatekey.pem 轉換成 DER 編碼, 沒有加密
OpenSSL> rsa -in server-privatekey.pem -inform pem -out server-privatekey.der -outform der
writing RSA key

3. 以產生好的 server-privatekey.pem 轉換成 PEM 編碼, 以 DES 演算法作加密
OpenSSL> rsa -in server-privatekey.pem -inform pem -out server-privatekey_des.pem -outform pem -des
writing RSA key
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

要輸入至少4位元的英數字才可以
phrase is too short, needs to be at least 4 chars

Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

4. 以產生好的 server-privatekey.pem 轉換成 DER 編碼, 以 DES 演算法作加密
OpenSSL> rsa -in server-privatekey.pem -inform pem -out server-privatekey_des.der -outform der -des
writing RSA key
OpenSSL>

最後,因為主機憑證轉成 DER:server-privatekey.der 是無法直接打開來看的,若遺失原來的 PEM 檔,只剩 DER 檔,則可以執行下列指令產生:

rsa -in server-privatekey.der -inform der -out server-privatekey_pem.pem -outform pem

 

這時將會產生4個檔案:server-privatekey.der、server-privatekey.pem、server-privatekey_des.der、server-privatekey_des.pem

相關參考網站:

OpenSSL rsa

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

Certificate Authority(CA) 憑證簡介 瞭解 CA 憑證的概念後,現在就先拿 Apache Httpd Server 來作網站的測試。免錢的 OpenSSL 就是一個好的工具,而 AppServ 套件本身即有 Apache、MySQL、PHP、phpMyAdmin 與 OpenSSL 工具,是最方便的軟體了。

一、準備檔案:
下載 AppServ 2.5.10


二、安裝 Apache Server 與設定:

1. 先行安裝AppServ,預設路徑應該安裝在 C:/AppServ/Apache2.2/,並先停止Apache伺服器。
2. 開啟C:\AppServ\Apache2.2\conf 內的 httpd.conf 作修改

把 LoadModule ssl_module modules/mod_ssl.so 的#註解拿掉
把 Include conf/extra/httpd-ssl.conf 的#註解拿掉

httpd.conf-mod_ssl.png  

三、在 C:\AppServ\Apache2.2\bin資料夾底下看見openssl.exe,滑鼠double click執行它,用它來作憑證

1. 輸入 genrsa -out server.key 1024 產生rsa私鑰(Server Private Key:server.key)

ServerPrivateKey.png  

2. 利用私鑰(Server Private Key:server.key)來產生簽署申請:輸入 req -new -out server.csr -key server.key -config ../conf/openssl.cnf 產生簽署申請

Country Name為國籍鍵入TW
State or Province Name為省份鍵入Taiwan
Locality Name為所在地
Organization Name為組織名稱
Organizational Unit Name為組織內單位
Common Name為domain name
Email Address為管理者的電子信箱
剩餘兩項可不填入

 ServerPrivateKeyForCASignRequest.png  

Step 3 & 4 是模擬 CA 第三方認證單位
3. 輸入 genrsa -out ca.key 1024 產生CA的rsa私鑰

4. 輸入 req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf 利用ca私鑰產生待會幫自己主機的簽署憑證,參數同step2上面設定

CACenter.png  

5. 接著於C:\AppServ\Apache2.2\bin資料夾內新建demoCA資料夾,並於demoCA資料夾內新增newcerts資料夾,與 index.txt跟serial檔案,並利用記事本開啟serial後鍵入01後存檔(這裡的值是參考C:\AppServ\Apache2.2 \conf\openssl.cnf 檔案裡 [ CA_default ] 這區段中的設定)

6. 利用step 3 &4 中模擬CA替網站簽署認證的檔案,私鑰:ca.key & 簽署憑證 ca.crt 兩個檔案來替自己的網站提出的簽署憑證申請檔: server.csr 作簽署憑證,產生憑證:server.crt
輸入ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

詢問是否簽署都回答 Y

ServerPublicKey.png  

7. 將C:\AppServ\Apache2.2\bin底下的私鑰 server.key 及CA簽署過的公鑰 server.crt 兩個檔案複製至C:\AppServ\Apache2.2\conf資料夾底下

8.打開 C:\Appserv\Apache2.2\conf\extra\http-ssl.conf檔案,修改部份如下:


#   General setup for the virtual host
DocumentRoot "C:/AppServ/www"
ServerName www.xxx.com:443
ServerAdmin xxx.xxx@gmail.com
ErrorLog "C:/AppServ/Apache2.2/logs/error.log"
TransferLog "C:/AppServ/Apache2.2/logs/access.log"

#   Server Certificate:
SSLCertificateFile "C:/AppServ/Apache2.2/conf/server.crt"
#   Server Private Key:
SSLCertificateKeyFile "C:/AppServ/Apache2.2/conf/server.key"

CustomLog "C:/AppServ/Apache2.2/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


再重啟 Apache Server 即可登入 https://localhost


Troubleshooting:

1. 若有 php_mbstring.dll 檔案遺失的警告,則開啟 C:\Windows\php.ini 將 extension=php_exif.dll 放置於 extension=php_mbstring.dll 之後即可解決

2. 在實做的過程中若電腦的 port:443 被佔用著,利用netstat -ano指 令可以看到是哪個pid去佔著這個port,再利用 process explorer(在Win 7&8 可以執行 Task manager -> Performance -> Resource Monitor)來觀看是哪個程式佔用著,再到服務 Services 關掉即可

參考:

AppServ + OpenSSL Setup in Win32

【php】利用openssl實作ssl網頁加密

HOWTO certificates
文章標籤

MIS 發表在 痞客邦 留言(1) 人氣()

何謂 CA ?

在網路蓬勃發展的時代,安全議題越來越受到重視,因此也有許多人提出如何將傳輸在網路上的資料進行加密傳送以增加安全性;然而有了憑證(certificate)的發明,除了用來將傳輸資料加密外,還可用來驗證資料傳送者與接收者的身份。

而若要瞭解 certificate,則首先必須知道何謂 CA(Certificate Authority)!

以下有兩段解釋:

certificate authority or certification authority (CA) is an entity which issues digital certificates for use by other parties. It is an example of a trusted third party. CAs are characteristic of many public key infrastructure (PKI) schemes.
憑證管理中心 (Certification Authority,CA)為具公信力第三者(Trusted ThirdParty) ,對個人及機關團體提供認證及憑證簽發管理等服務,以建立具有機密性、鑑別、完整性、不可否認性、接取控制及可用性而的資訊通信安全環境與機制。在建置營 運憑證管理中心時,須依憑證管理中心之營運政策及策略,制訂憑證政策與憑證實作準則,規範其運作規定與作法,一方面讓用戶瞭解在使用上的作業規定,另一方 面則藉此表明其在安全及公證性上的信賴度。



CA建置流程說明

從CA建置到憑證的簽署,這屬於使用者端的運用,步驟如下:

1. 自行建立CA(假設沒有花錢使用公用CA的情況下)
2. 建立 Private Key
3. 建立 Certificate Request(憑證要求)
4. 將 Certificate Request 送交 CA 來簽證此憑證


而在 CA server 的部分,這屬於第三方公證單位的運用,要介紹的重點在於:

1. 建置 CA server
2. 簽發憑證、報廢憑證
3. 設定 CA 簽證的 policy



CA server 種類

首先有些觀念必須說明,即是 CA server 的種類有兩種:

  • Self-Signed CA
    亦可稱為 root CA。由於此種 CA 所發的憑證(certificate)是不經由任何上層 CA 所認證,而是以「自行認證」的方式進行認證。因此像是最上層的商業 CA,或是自行架設內部認證用的 CA,都可以屬於此類。
  • Signed CA
    不 同於 Self-Signed CA,此種 CA 所發佈的憑證,可被上層的 CA 進行認證,而兩種 CA 的關係則是「Parent CA <==> Child CA」。 而通常設定上層 CA 時,除非是內部使用,不然使用商業 CA 是必須付費的!

 

MIS 發表在 痞客邦 留言(0) 人氣()

Syntax Highlighter 可以讓讓程式碼 coding program 在網頁上被明顯的呈現出來,這是一套免費的軟體;雖然官方網站提供 Syntax Highlighter下載,可是 痞客邦 PIXNET 無法上傳這些檔案,所以我們只好使用Syntax Highlighter官方網路線上的引用的方式來使網頁呈現程式語法效果。

作法很簡單,依序下列的步驟就可以達到我們想要的目的:

1. 進入 痞客邦 PIXNET 管理後台,選擇管理後台的部落格。

2. 然後在部落格管理的"側邊欄位設定"增加一個名為 JS 的側欄,或是在 「管理後台」-->「部落格管理」-->「側邊欄位設定」-->「頁尾描述」-->「設定」 加入 ,為了網頁美觀建議放在側欄最底部。

SyntaxHighlighter  
  

3. 在 JS 側欄增加下列的內容






























4. 再加入你使用的程式語言,例如C#,如下程式碼
<script src="http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js" type="text/javascript"></script>

將程式碼貼如下

 <pre class="brush:something">
//這裡輸入程式碼
</pre>
 

紅色部分的文字可以換成你需要對應的程式語言,對照表如下:

Brush name Brush aliases File name
ActionScript3 as3, actionscript3 shBrushAS3.js
Bash/shell bash, shell shBrushBash.js
ColdFusion cf, coldfusion shBrushColdFusion.js
C# c-sharp, csharp shBrushCSharp.js
C++ cpp, c shBrushCpp.js
CSS css shBrushCss.js
Delphi delphi, pas, pascal shBrushDelphi.js
Diff diff, patch shBrushDiff.js
Erlang erl, erlang shBrushErlang.js
Groovy groovy shBrushGroovy.js
JavaScript js, jscript, javascript shBrushJScript.js
Java java shBrushJava.js
JavaFX jfx, javafx shBrushJavaFX.js
Perl perl, pl shBrushPerl.js
PHP php shBrushPhp.js
Plain Text plain, text shBrushPlain.js
PowerShell ps, powershell shBrushPowerShell.js
Python py, python shBrushPython.js
Ruby rails, ror, ruby shBrushRuby.js
Scala scala shBrushScala.js
SQL sql shBrushSql.js
Visual Basic vb, vbnet shBrushVb.js
XML xml, xhtml, xslt, html, xhtml shBrushXml.js

 

其他常見使用技巧,改變行數編號與反白強調,請參考官網首頁右邊按configuration,在<pre>標籤語法內加入,first-line:行數編號的起始號碼,highlight:[數字]反白強調的行數
<pre class="brush: csharp; first-line: 5; highlight: [10, 15]">...</pre>

5. 呈現出來的效果如下:

     
/**
* SyntaxHighlighter
*/
    function foo()
    {
        if (counter <= 10)
            return;
        // it works!
    }
文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()