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) 人氣()