2018年4月18日 星期三

Ubuntu Apache 2.4 正確使用conf、mods、sites等設定檔。

環境: 
OS:Ubuntu 14.04 Server 
Apache:2.4

一、目錄結構
/etc/apache2/
|-- apache2.conf
|-- conf-available
|       |-- *.conf
|-- conf-enabled
|-- mods-available
|       |-- *.conf
|-- mods-enabled
|-- sites-available
|       |-- *.conf
|-- sites-enabled


apache2.conf 是主要的設定檔。
conf-available/*.conf 是「可用的」config檔。
conf-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
mods-available/*.conf 是「可用的」config檔。
mods-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
sites-available/*.conf 是「可用的」站台設定檔。
sites-enabled/*.conf 是「已啟用的」的台設定檔(皆為超連結)。

注意!conf-enabled、mods-enabled、sites-enabled內的檔案只是連結至所對應「*-available」目錄中的設定檔,所以要設定檔案請在「*-available」目錄中設定,最後再用啟用設定檔的指令,在「*-enabled」目錄中建立連結。

二、啟用及關閉設定
1. conf啟用及關閉範例
啟用 sudo a2enconf charset
關閉 sudo a2disconf charset

2. mod啟用及關閉範例

啟用 sudo a2enmod userdir
關閉 sudo a2dismod userdir

3. site啟用及關閉範例


啟用 sudo a2ensite ssl

關閉 sudo a2dissite ssl

三、重啟Apache
1. 測試 Apache 設定檔有沒有錯誤,看到 Syntax OK, 就可以啟動apache2。
apache2ctl configtest

2. 重新啟動。
sudo service apache2 restart



2017年3月12日 星期日

Android如何正確處理 WebView SSL 錯誤處理

●官方說明:
自 2016 年 11 月 25 日起,只要新的應用程式或更新內容含有這個SSL Error Handler安全性漏洞,一律禁止在 Google Play 發佈。

如要解決這個問題,請更新應用程式的程式碼,在伺服器提供的憑證符合預期時叫用 SslErrorHandler.proceed(),不符合預期時則叫用 SslErrorHandler.cancel()。


●以往大家都在WebView的onReceivedSslError事件中直接忽略檢查,使應用程式含有SSL Error Handler安全性漏洞。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    handler.proceed();
}


●現在應該要正確的處理onReceivedSslError事件,才可在 Google Play 發佈。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    SslCertificate sslCertificate = error.getCertificate();

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("SSL 憑證錯誤");
    builder.setMessage ("無法驗證伺服器SSL憑證。\n仍要繼續嗎?");
    builder.setPositiveButton("繼續", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });

    final AlertDialog dialog = builder.create();
    dialog.show();
}

2016年9月20日 星期二

Windows Server 2012 R2、 IIS 8.5、遠端桌面,停用SSL 3.0、TLS 1.0、TLS 1.1協定、停用RC4、3DES加密套件、停用Diffie Hellman KeyExchangeAlgorithms

SSL 3.0、TLS 1.0、TLS 1.1 加密協定存在中間人攻擊弱點,RC4、3DES加密套件有漏洞、停用Diffie Hellman KeyExchangeAlgorithms,如果網站有使用HTTPS、主機有啟用遠端桌面者,強烈建議關閉。

環境:
Windows Server 2012 R2
IIS 8.5
已啟用HTTPS或主機有啟用遠端桌面

修改方式:
透過修改機碼的方式,先執行regedit.exe,並至路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL]。

停用SSL 3.0
1.在Protocols目錄下新增機碼,名稱輸入「SSL 3.0」。
2.在SSL 3.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.0
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.0」。
2.在TLS 1.0目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用TLS 1.1
1.在Protocols目錄下新增機碼,名稱輸入「TLS 1.1」。
2.在TLS 1.1目錄下新增機碼,名稱輸入「Client」及「Server」。
3.於Client目錄中新增DWORD(32位元值),名稱輸入「DisabledByDefault」,確認值為1。
4.於Server目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用RC4加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「RC4 128/128」。
2.於RC4 128/128目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用3DES加密套件
1.在Ciphers目錄下新增機碼,名稱輸入「Triple DES 168」。
2.於Triple DES 168目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

停用 Diffie Hellman KeyExchangeAlgorithms
1.在KeyExchangeAlgorithms目錄下新增機碼,名稱輸入「Diffie-Hellman」。
2.於Diffie-Hellman目錄中新增DWORD(32位元值),名稱輸入「Enabled」,確認值為0。

2016年7月21日 星期四

CentOS禁止從遠端以root帳號登入

說明:root帳號可以從遠端登入是危險的,在管理上也會有問題,所以應該限制root帳號從遠端登入。


系統版本:CentOS 5.11

1.修改/etc/ssh/sshd_config
PermitRootLogin no (預設為yes)

2.重新啟動 sshd
/etc/init.d/sshd restart

2016年4月16日 星期六

Redmine加入Gitolite的 Git Repository

環境:
Ubuntu + Redmine + Gitolite3
Gitolite所管理的目錄為/home/git

說明:
git repository在Gitolite的管理下,預設只有git帳號才可存取,Redmine並無權限存取Gitolite控制的repository,所以需調整權限使Redmine可以存取。

Redmine是由Apache執行,所以是由www-data帳號在執行,為了使www-data帳號可存取git目錄,需將www-data帳號加入至git群組中,並修改Gitolite預設的上傳權限使git群組可存取。

步驟:
1. 將用戶www-data加入至git群組中。
sudo usermod -a -G git www-data

2. 修改Gitolite預設上傳時的權限,修改/home/git/.gitolite.rc檔案。
UMASK => 0077,
改為
UMASK => 0027,


3. 允許git群組存取repositories資料夾。(群組權限增加R、X)
sudo chmod g+rx /home/git
sudo chmod g+rx /home/git/repositories

4.如有已上傳之repository,請變更權限。(群組權限增加R、X)
sudo chmod g+rx -R /home/git/repositories/YourRepo

5.於Redmine中設定repository的位置即可。

2015年9月28日 星期一

PowerBuilder使用saveas()函數列印成PDF

1. 先下載及安裝Ghostscript。(如PowerBuilder是32位元者,必須安裝32位元版本。)
2. Windows 10 作業系統,先自HP官網下載及解壓縮HP Postscript印表機驅動程式。

3. 新增一部名稱為「Sybase DataWindow PS」的印表機。
  • 開啟控制台->裝置和印表機->新增印表機->新增本機印表機。
  • 印表機連接埠,請選擇「使用現有的連接埠」,並且選擇「FILE:(列印至檔案)」。
  • 印表機的驅動程式可以選擇任一款機型的印表機,只要印表機名稱最後是「PS」結尾即可。(製造商HP,印表機名稱中最後是「PS」者)  (windows 10 作業系統者,請選「從磁片安裝(H)...」,選擇HP Postscript印表機驅動程式目錄進行安裝。
  • 最後將此印表機命名為「Sybase DataWindow PS」。切記,大小寫及空格都要一致,也不可打錯字。 
  • 如果提示「Windows無法驗證此驅動程式的發行者」,請點「仍然安裝此驅動程式」繼續執行。
  • 成功後會出現一台名為「Sybase DataWindow PS」的印表機。
4. PowerBuilder已可使用saveas()函數列印成PDF類型檔案了。

2015年9月4日 星期五

phpmailer Fatal error: Class 'SMTP' not found

使用phpmailer寄送SMTP信件時,發生Fatal error: Class 'SMTP' not found錯誤。

原因:程式執行時找不到class.smtp.php檔案,故顯示無法找到'SMTP' Class。

解決方式:phpmailer 5.2.8開始,需使用「require 'PHPMailerAutoload.php';」的方式,次檔案將會自動引入「class.phpmailer.php」、「class.smtp.php」檔案。