2015年8月1日 星期六

Ubuntu Apache 2.4 啟動SSL

環境:
OS:Ubuntu 14.04 Server
Apache:2.4

Ubuntu Apache 2.4 是以啟用SSL虛擬主機之方式設定SSL服務。
本設定是以自行發行金鑰及憑證。


1. 安裝openssl。
    $sudo apt-get install openssl

2. 建立SSL資料夾,存放私鑰及憑證。
    $sudo mkdir /etc/apache2/ssl

2. 產生私鑰及憑證,使用自己的私鑰替自己的憑證簽章。
1. 切換目錄
$cd  /etc/apache2/ssl

2. 產生RSA Private Key,建議不要設密碼,否則 Apache 伺服器程式啟動時,讀取憑證和 Private Key 時就會詢問一次密碼。(key)
$sudo openssl genrsa -out apache.key 2048
$sudo chmod og-rwx apache.key

3. 產生憑證申請書。(csr)
憑證申請書,是把您的資料,和這個 Public Key 夾在一起,以便認證中心審核,簽上簽名用的。
$sudo openssl req -new -key apache.key -out apache.csr

Country Name (2 letter code) [AU]:TW
State or Province Name (full name) [Some-State]:Taiwan R.O.C
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:  //憑證的名稱(*重要*)
Email Address []:                                 //申請單位的聯絡信箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:按 Enter 直接跳過           //申請書的密碼
An optional company name []:按 Enter 直接跳過   //憑證代辦公司的名稱

檢查csr,Signature Algorithm是不是sha256WithRSAEncryption。
$openssl req -text -in apache.csr -noout

4. 產生有效期1年的伺服器憑證,繞過 CA 自己簽名的證書。(crt)
$sudo openssl x509 -req -days 365 -in apache.csr -signkey apache.key -out apache.crt

檢查crt,Signature Algorithm是不是sha256WithRSAEncryption。
$openssl x509 -text -in apache.crt -noout

5. 簽完憑證,憑證申請書就不用了,可以刪掉。
$sudo rm apache.csr

3. Apache啟動SSL模組,並重新啟動apache服務。
    $sudo a2enmod ssl
    $sudo service apache2 restart

4. 產生虛擬主機設定檔(複製預設檔)
    $cd /etc/apache2/sites-available
    $sudo cp default-ssl.conf ssl.conf

5. 修改sites-available/ssl.conf,設定憑證位置。
    $sudo vim /etc/apache2/sites-available/ssl.conf
SSLCertificateFile        /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile        /etc/apache2/ssl/apache.key

6. 修改mods-available/ssl.conf,停用SSLv3協定、停用RC4加密套件。(SSLv3 加密協定存在中間人攻擊弱點,RC4加密套件有漏洞,如果網站有使用HTTPS,強烈建議關閉)
    $nmap --script ssl-enum-ciphers -p 443        檢查SSL、加密套件資訊
$sudo vim /etc/apache2/mods-available/ssl.conf

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4 (在此屬性後面增加「:!RC4」)
SSLProtocol all -SSLv3

7. 啟用SSL虛擬主機,並重新啟動apache服務。
    $sudo a2ensite ssl
    $sudo service apache2 restart

8. 檢查port開放狀態,檢查/etc/apache2/ports.conf檔案,是否已設定port 443。    
    $netstat -atulnp
    $sudo vim /etc/apache2/ports.conf
Listen 80
<IfModule ssl_module>
       Listen 443
</IfModule>

2015年7月31日 星期五

Ubuntu Apache 啟動時出現ServerName錯誤

在Ubuntu啟動啟動Apache2時,Apache 可以正確被啟動,但如果出現下列訊息:
AH00558:apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

在以前,我們會在/etc/apache2/apache2.conf中,手動增加「ServerName localhost」。但 Ubuntu 長久以來預設 Apache 安裝都沒加上 ServerName 的設定絕對有他的道理。

其實 Apache 在開啟的時候會將主機 hostname 設定為 ServerName ,所以 hostname 需為FQDN,如 hostname 不符 FQDN規範,就會出現上述錯誤訊息。
先使用 hostname 指令查出下列資訊:
  • hostname 取得目前本機設定好的 Hostname
  • hostname –i 取得目前本機 Hostname 對應的 IP
  • hostname –I 取得目前本機設定好的所有 IP 位址(會排除 loopback 介面)
例如我們取得下列資訊:
hostname => ubuntu
hostname -i => 127.0.1.1
hostname -I => 192.168.0.1


修改方式:
1. 透過 hostname 指令取得本機之hostname。

2. 修改 /etc/hosts 檔案中的 hostname 為標準FQDN名稱。
     $sudo vim /etc/hosts
     127.0.0.1 localhost
     127.0.1.1 原ubuntu 修改為 ubuntu.mydomain

3. 修改 /etc/hostname 檔案中的 hostname 名稱。
     $sudo vim /etc/hostname
     原 ubuntu 修改為 ubuntu.mydomain

4. 最後設定hostname完整的 FQDN 主機名稱 。(重開機也可)
     $sudo hostname ubuntu.mydomain

註:FQDN (fully qualified domain name,完整網域名稱), FQDN 包含兩部分﹕主機名稱和網域名稱。例如 mycomputer.mydomain.com。

2015年4月7日 星期二

建立Aptana PHP Project

Eclipse開發環境是依照此篇「Eclipse 安裝 Aptana Studio 3 plugin」設定。

一、建立PHP Project:
        File->New-> PHP Project,依步驟建立即可。

2015年2月13日 星期五

[※注意!!]使用.Net 寄送郵件中文附件檔名亂碼問題

使用.NET寄發信件時,夾帶之中文附件檔名會亂碼。

原因:.NET Framework 4的問題(Bug)
解決方案:
將專案的「目標Framework(G)」改為.NET Framework 3.5以下或.NET Framework 4.5以上

微軟說明-徵狀:
請考慮下列情況:
    ●您執行的 Microsoft.NET Framework 4 編譯的應用程式。
    ●應用程式呼叫System.Net.SmtpClient類別,以傳送電子郵件訊息,並使用附件類別來將檔案附加到郵件訊息物件。
    ●附件名稱包含非 ASCII 字元,且為超過 41 utf-8 編碼的位元組。
   
在這個案例中,附件名稱意外前已經編碼兩次傳輸。然後,電子郵件訊息收件者附件中尋找被截斷的編碼的名稱,但不是原始的名稱。

微軟說明-發生的原因:
之所以發生這個問題,是因為在.NET Framework 4 的問題。包含正確摺疊每行長度限制的 RFC 標準重新寫入SMTP編碼方式。這種行為插入其他歸位換行(CRLF)字元的名稱字串太長時的回復線。這些額外的控制字元會導致要重新編碼的附件名稱。

參考網站: http://support.microsoft.com/kb/2402064

2015年1月8日 星期四

C# 使用ADO.NET連Sybase時發生Unable to load DLL 'sybdrvado11.dll'

C# 使用ADO.NET連Sybase時發生Unable to load DLL 'sybdrvado11.dll'錯誤。

雖然程式執行目錄中有下列三個DLL:
Sybase.Data.AseClient.dll
sybdrvado11.dll
sybdrvssl.dll

會出現 Unable to load DLL 'sybdrvado11.dll'錯誤,可能是主機遺失msvcp71.dll、msvcr71.dll兩個檔案(C runtime),所以只要將這兩個DLL複製至執行目錄即可。

2014年12月24日 星期三

windows 8.1 系統更新後 WinHlp32.exe無法執行

今天(2014年12月24日)發現一個問題,因為第一次安裝使用windows 8.1,並把系統所有可以更新的檔案都完成更新,但更新完成後,發現已安裝的WinHlp32.exe(KB917607)無法正常執行,後來嘗試移除KB3000850更新後,就可以正常執行WinHlp32.exe了。

如需要使用WinHlp32.exe者,暫時先不要安裝KB3000850更新,如果已安裝者,請先移除。

2014年10月5日 星期日

Eclipse 安裝 Aptana Studio 3 plugin

此安裝設定是為了開發PHP。

一、安裝環境:
Windows 7 64bit
Eclipse IDE for Java Developers(Kepler SR2 平台版本4.3) 64bit
Aptana Studio 3

二、網站:
Eclipse官網:https://eclipse.org/home/index.php
Aptana官網:http://aptana.com/

三、安裝步驟:
1. 請自Eclipse官方網站,下載 Eclipse IDE for Java Developers (Kepler SR2) 64bit。

2. 將下載之Eclipse解壓縮至自己喜歡的地方,至Eclipse目錄裡,執行eclipse.exe,開啟Eclipse。

3. Help->Install New Software->將Aptana官方網站提供之Plug-in URL貼入「Work With」欄位後按Enter,會找到安裝檔,請依步驟安裝。(Aptana官方網站有詳細說明)
URL:http://download.aptana.com/studio3/plugin/install

4. 將Eclipse環境調整為開發Web環境,先執行Window-> Close All Perspective,然後執行Window-> Open Perspective-> Other...-> Web。

5. 調整Window-> Preferences:
    General-> Workspace-> Text file encoding-> 調整為UTF-8(統一字元編碼)。
    General-> Editors-> Text Editors-> 勾選「Show line numbers」,顯示行號。
    Aptana Studio-> Themes,Overall Theme用Windows 7。
    Aptana Studio-> Themes,Editor Themes 用Dreamweaver。
    Aptana Studio-> Themes,Font調到新細明體12號字。
    Aptana Studio-> Publishing-> 增加「.*」,此類檔案為隱藏檔,不需同步。

6. 開啟常用的View,Window-> Show View-> 選Remote。