:::

hirokofan - Linux雜記 | 2011-09-01 | 人氣:7600

 

debian上設定apache2+SSL

  • apache載入ssl模組

  • apache站台設定

  • 自動輸入PEM pass phase

  • xoops全站使用https需做的調整

 

將以下幾個檔案放到適當的位置

ca.crt public憑證(ChainFile

server.key :申請憑證時產生的key

server.pem :核發的憑證

 

  • apache載入ssl模組

/etc/apache2/mods-available底下的ssl.confssl.load link/etc/apache2/mods-enabled

    • cd /etc/apache2/mods-enabled

    • ln -s ../mods-available/ssl.load ssl.load

    • ln -s ../mods-available/ssl.conf ssl.conf

 

  • apache站台設定

/etc/apache2/sites-available裡面有個default-ssl,前幾行如下

 

<IfModule mod_ssl.c>

<VirtualHost _default_:443>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/

 

修改成

 

<IfModule mod_ssl.c>

 

NameVirtualHost *:443

<VirtualHost *:443>

ServerAdmin webmaster@localhost

 

ServerName [DomainName]

DocumentRoot /var/www/

 

往下看,會看到很多「SSLCertificate**** [檔案]」的敘述,將這些前面加上#註解掉,在前面的SSLEngine on下面補上這三行

 

SSLCertificateFile /[適當位置]/server.pem

SSLCertificateKeyFile /[適當位置]/server.key

SSLCertificateChainFile /[適當位置]/ca.crt

 

存檔後將檔案複製或link/etc/apache2/sites-enabled下面

    • ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/default-ssl

此時重新啟動apache2/etc/init.d/apache2 restart)就可以開啟,不過這時還需要手動輸入PEM pass phase才能啟動。

原來給http用的設定檔(如/etc/apache2/sites-enabled/000-default),裡面的站台設定<VirtualHost ***.***.***.*** >要改成<VirtualHost ***.***.***.***:80 >

 

  • 自動輸入PEM pass phase

在適當的位置建立key.sh,如果申請憑證時輸入的密碼是「abc123xyz987」,key.sh內容

 

#!/bin/sh

echo 'abc123xyz987'

 

將檔案設定為可執行(chmod +x key.sh),然後編輯/etc/apache2/mods-available/ssl.conf,將

 

SSLPassPhraseDialog builtin

改成

SSLPassPhraseDialog exec:/[適當位置]/key.sh

 

重新啟動apache2,如果沒有錯誤訊息也可以連上網站就成功了。

若重新啟動apache2失敗,請檢查

    • 000-default是否有將<VirtualHost ***.***.***.*** >後面補上:80

若重新啟動apache2無錯誤訊息但網站連不上,請檢查

    • ssl.loadssl.conf是否有複製或連結過去

    • default-ssl是否有複製或連結過去

 

  • xoops全站使用https需做的調整

    • 調整mainfile.php

    • 調整apache站台設定讓從http連進來的自動轉為https

    • 調整模組使IE的警告訊息不要跳出

 

    • 調整mainfile.php

// URL Association for SSL and Protocol Compatibility

$http = 'http://';

if (!empty($_SERVER['HTTPS'])) {

$http = ($_SERVER['HTTPS']=='on') ? 'https://' : 'http://';

}

define('XOOPS_PROT', $http);

 

// XOOPS Virtual Path (URL)

// Virtual path to your main XOOPS directory WITHOUT trailing slash

// Example: define('XOOPS_URL', 'http://[DomainName]');

define('XOOPS_URL', 'http://[DomainName]');

改為

// URL Association for SSL and Protocol Compatibility

$http = 'https://';

if (!empty($_SERVER['HTTPS'])) {

$http = ($_SERVER['HTTPS']=='on') ? 'https://' : 'http://';

}

define('XOOPS_PROT', $http);

 

// XOOPS Virtual Path (URL)

// Virtual path to your main XOOPS directory WITHOUT trailing slash

// Example: define('XOOPS_URL', 'http://[DomainName]');

define('XOOPS_URL', 'https://[DomainName]');

 

    • 調整apache站台設定讓從http連進來的自動轉為https

建立一個資料夾如ssl,裡面只要放一個index.php(避免被人用http讀到其他檔案),sites-enabled中網站預設路徑改過去,如DocumentRoot /var/www/sslindex.php內容

 

<?php

header("Location:https://[DomainName]");

?>

 

    • 調整模組使IE的警告訊息不要跳出

當全站都使用https連線時,網頁中只要有嵌入以http連接的圖片或javascriptIE就會跳警告(Firefox不會),發現有這個訊息時檢視原始檔查看哪些連結會造成這個問題,找到後將http改成https或將連結消除。已知的有

  • tadtoolsgoogle金鑰

/modules/tadtools/jquery.php

<script type='text/javascript' src='https://www.google.com/jsapi?key={$google_api_key}'></script>


  • tadnews 2.0在新聞下方按讚的按鈕(下面是加上//註解掉)

/modules/tadnews/index.php

//$push=push_url("tadnews");


  • xoops2.5後台defaultsourceforge圖片

/modules/system/themes/default/xotpl/xo_accordion.html

 

<img src="https://sflogo.sourceforge.net/sflogo.php?group_id=41586&type=9"