2015年9月4日 星期五

無法使用Gmail的SMTP服務寄送郵件

程式開發時,常常會有使用Gmail的SMTP服務寄信的需求,當程式設定都是正確的時候,但是執行時總是出現SMTP connect failed的問題,可以檢查Gmail的下列設定,此設定是必需經過google允許,才能使用Gmail的SMTP服務寄信。

1.Gmail-> 設定->設定->帳戶和匯入->變更帳戶設定->其他 Google 帳戶設定。

 

 2.登入和安全性->已連結的網站與應用程式。



 3. [允許安全性較低的應用程式] 設定處於啟用狀態->設定為開啟。
















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,依步驟建立即可。