2011-11-16

Ubuntu 設定 Apache 使用 SSL 網站 (Self Signed)

阿舍後來就真的在阿舍的 VPS 上裝了 OwnCloud 2,還不錯用,不過,阿舍用一用就想到這個安全的問題,資料這樣上傳和下傳,沒有經過加密,那不就任何人都可以撈去研究、研究嗎 ? 所以,阿舍就要把 OwnCloud 的網站弄成有 SSL 支援的,可是,一個公開經過第三方認證的 SSL 憑證,一年要花 50 ~ 70 美元,阿舍只是要自己用用而已,應該是不用花這錢才是哩 !


後來,阿舍才想起來,阿舍在若干年前有用 Lotus Domino 當 CA 伺服器,可以自己發憑證給自己,所以,阿舍就去找找看 Ubuntu 和 Apache 要怎麼做的到,結果,阿舍就找到這篇這篇這篇有說明如何弄,阿舍在 Ubuntu 11.10 測試了一下,果然是可以的,阿舍把操作步驟整理如下。( 阿舍的經驗來說,這些設定應該也適用在 Ubuntu 10.04、Ubuntu 10.10 和 Ubuntu 11.04 等版本。)

1.安裝 OpenSSL

Ubuntu 在 10.04 後,好像就有預裝 OpenSSL 了,可以用下面的指令裝裝看,有裝過再裝一遍也不會有事的哩 !

sudo apt-get install openssl


2.啟用 Apache 2 的 SSL 模組

Apache 預設是沒有啟用 SSL 模組的,請用下面的指令來啟用。

sudo a2enmod ssl

3.建立放憑證的資料夾

請先用下面的指令來建立立要放憑證的資料夾,在下一個步驟會用到。

sudo mkdir /etc/apache2/ssl

4.建立自己認證

請用下面的指令來產生憑證,-days 後面的參數365是憑證的有效日期,可以依需要自行調整,-out 和 –keyout 是憑證和金鑰產出後要存放的路徑。

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

執行上面的指令之後,會出現下面的問題,這些是會寫到憑證裡的資訊,但是,不一定要全都填的。



5.修改虛擬主機的設定
阿舍是把OwnCloud 2 裝在虛擬主機裡,所以,要調整擬主機的設定檔,把第一行由原來的「*:80」改成「_default_:443」,然後再加入下面的三行,如果產生憑證時,有變更過產出的檔名或路徑時,就要修改第二行和第三的路徑和檔名。

<VirtualHost _default_:443>
       SSLEngine On
       SSLCertificateFile /etc/apache2/ssl/apache.pem
       SSLCertificateKeyFile /etc/apache2/ssl/apache.key

...


6.重啟 Apache 2

啟用好 Apache 的 SSL 模組並設定好虛擬主機之後,就要把 Apache 重啟來讓新設定生效,請下面的指令來重新啟動 Apache。

sudo /etc/init.d/apache restart

sudo service apache2 restart (Ubuntu 11.10)

7. 防火牆
如果有啟用防火牆的話,要打開 443 埠號,不然,網站會打不開的,阿舍有啟用 ufw,所以,就用下面的指令來啟用 443 port。

sudo ufw allow 443

8.開啟網站

最後,就可以用「https://」來開啟網站,如果 SSL 有設定成功,應該就會出現警告訊息,這是因為憑證沒有經過第三方公司認證過,所以,瀏覽器會警告說這個憑證可能是假的,不要管它,繼續操作下去就好了,如果是用 Firefox,就要點選「新增例外網站」,如果是用 Chrome,那就要點選「仍要繼續」, IE 的話,就點選「繼續瀏覽此網站(不建議)」的連結進入網站,進入網站之後,應詃就是用 https,也就是 SSL 在連線了哩 !

進入網站後,如果去點選網址列的憑證資訊,應該就會出現之前在步驟 4 所輸入的資訊哩 !


更新:

其實,現在用 Let's Encrypt 來申請免費憑證已經很方便了,如果說,想體會一下真正設定憑證的感覺和差別,然後,又自己有一個網域可以試的話,阿舍就建議直接到 Let's Encrypt 網站去申一個憑證來試哩 ... 供參囉 !

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

8 則留言 :

Gea-Suan Lin 提到...

如果只是要過 browser certificate,現在一般的價錢是 USD$10 而非 USD$50...

至少我在用的 namecheap 就是這個價錢...

Arthur 提到...

Hello Lin 兄,

太感謝! 原來有這麼便宜的,阿舍一直以為都要這麼貴說 --!

arguskao 提到...

4.建立自己認證這一段,我們也可以自己發給自己嗎?

ayubiz 提到...

Hello,

是的,步驟 4 就在建立一個自己產生,但未經過第三方公正單位認證的憑證哩 ! ...^^=

供參 ! ^^=

arguskao 提到...

抱歉,我想再問一下
我都照著步驟做了
卻發現.....
只能用https://ip 連
如果用 https://servername ,會說不能連
不知道您知道哪裡可能出了錯嗎
感謝您的回應

ayubiz 提到...

Hello,


阿舍在這篇文的最後面有提到,因為是沒有經過第三方公正單位認證,所以,瀏覽器就會警告憑證有問題囉 ! ... 但是,網站還是可以進入和運行的哩 !


供參囉 ! ^^=

arguskao 提到...

謝謝您的回答,我知道會警告憑證有問題,但是我的確是會出現不能連結的情況,找了很多教學,試了很多次都失敗,可能不知道哪裡錯了吧,只有http://ip才可以

匿名 提到...

因為domain沒註冊會找不到,可以在windows 下目錄的hosts做設定即可。hosts如何設定可google

張貼留言

歡迎留言提問和討論 .... 😁