目錄:
Part5
前言:
Part5 我們會為 nextcloud 進行 SSL 加密。這篇開始,相對原理會困難一些。如果你現在心情煩躁、剛失戀、買賣股票賠錢,警告,你都不適合觀看這篇文章。
OK 現在讓我們來開始吧。
SSL 加密,作用就是加密互聯網之間的通訊。所謂的通訊,包括你對外發送的任何資料,包括你上傳/下載的東西,也包括你的登入密碼。互聯網之間的通訊就正如在大街上講話,只要你講出來,別人想聽就可以聽到,這樣並不安全。
所以如果我們不希望別人聽得到我們之間的對話,就需要說暗號,在互聯網通訊的暗號方式就是使用 SSL 加密。這樣的技術在大多數網頁都會有,包括銀行網頁、網購網頁等等,其實凡使用到帳戶密碼的網頁,都應該用上 SSL。
雖然我們不會對 nextcloud 輸入銀行帳號/信用卡資料等等,但上傳的都是個人資料(可以是你手機拍的照片等等) 我們不希望別人在你傳輸的過程中可以隨便攔截得到,所以個人cloud 也都應該進行加密。當然,內網是沒有這樣的問題的,但 nextcloud 的最終目的就是可以從外網使用。
正文:
SSL 設置說明:
SSL 設置說明:
在這篇我們會使用 Apache 自帶的 Self-Signed Certificate 來進行 SSL加密,好處在於無需花錢向第三方購買認證服務,而且也無需域名就可以登記(正規來說,域名也是要購買的)。
當然,我們也可以使用有限時/有限制的免費域名,或之類之類的,但本篇講求方便簡單,我們會直接用 IP 進行 Self-Signed Certificate。
Apache 說明:
Apache 是 Web伺服器軟體之一,在傳統 Nextcloud 架設中,我們要先架設 Apache 及 MySQL database ,再在這樣的基礎上架設 Nextcloud。而使用 Docker 架設 Nextcloud 已經包含了這個部分,所以我們當時沒有接觸到。但由於 Self-Signed Certificate 是 Apache 的功能,所以我們這次要回到 Nextcloud container 當中設置 Apache。
Apache 設置分成2個部分,第一部分是建立 Self-Signed Certificate 以啟用 SSL 加密 ,第二部分是設置 Nextcloud 使用這個 SSL。
1. 記下 nextcloud container 的 IP
2. 再次點選 >_ 連線到 nextcloud container 的文字操作介面
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
解釋:
- openssl : 使用 OpenSSL 的指令
- req : 指示使用 X.509 認證模式
- x509 : 特別指明使用 x509
- nodes : 指示 OpenSSL 容連 Apache 讀取加密資訊
- days 365 : 設定指示的期限 365天
- newkey rsa:2048 : 加密金匙設定為 2048 bits 長度
- keyout : 設定金匙放置的位置
- out : 設定放置憑證的位置
接下來我們要手動登記加密的相關資料,大部分資料都只是為了記錄,不是很重要,也不用填寫得詳情,唯獨 Common Name 必須正確。
Country Name (2 letter code) [XX]: 國家
State or Province Name (full name) []:省份
Locality Name (eg, city) [Default City]:城市
Organization Name (eg, company) [Default Company Ltd]:組織名稱
Organizational Unit Name (eg, section) []:組織單位
Common Name (eg, your name or your server's hostname) []:重要! 重要! 輸入 nextcloud container 的IP
Email Address []:聯絡 e-mail
填寫完之後,又會回到 /var/www/html/, 這樣代表登記的部分結束了。
nano /etc/apache2/sites-available/000-default.conf
指令的意義是 : nano 是指使用文字編輯工具,到 /etc/apache2/sites-available/ 的位置下,開啟 000-default.conf 這個檔案
文字介面不能使用滑鼠,你可以使用上下左右鍵調整輸入位置。現在把所有文字都刪掉,換成筆者改好的設置(直接把以下文字複製貼上,但要修改紅字的地方):
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName {ContainerIP}
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>
<VirtualHost *:80>
ServerName {ContainerIP}
Redirect / https://{HostIP}:4433/
</VirtualHost>
你需要把紅字改成
{ContainerIP} = nextcloud container 的 IP
{HostIP} = home nas 正在使用的IP ,即在 Part1 你為OMV 設定的固定IP。
{ContainerIP} = nextcloud container 的 IP
{HostIP} = home nas 正在使用的IP ,即在 Part1 你為OMV 設定的固定IP。
現在如果你再次輸入 nano /etc/apache2/sites-available/000-default.conf 就會看到已經修改過的檔案,同樣按 CTRL + X 離開。(如果沒有修改文檔,就不會要求你按 Y )
在上以文檔設置當中,我們設定了 nextcloud 使用 SSL ,並且把原先的 http 重新導向加密後的 https 網址。https 比 http 多一個 s 代表 secure (安全)。
而使用 https 需要使用 port 4433 來進入(port 的用法就是在IP後加上 :4433而已),接下來,我們要設置nextcloud 信任這個新的接入地址,因為安裝nextcloud 的時候,只有預設的 http(8080) 是容許。
現在我們要在 nextcloud 上登記新的 HostIP:4433 接入地址。
apt install sudo
再輸入以下指令,修改 nextcloud trusted domain(信任網域)。
sudo -u www-data php /var/www/html/occ config:system:set trusted_domains 2 --value={HostIP}:4433
同樣修改紅字部分:
{HostIP} = home nas 正在使用的IP ,即在 Part1 你為OMV 設定的固定IP。
我們登記的位置是 trust_domains 2 ,1號的位置預設的 http 接入。
成功的情況下,會出現圖中下方的綠色字:
System config value trusted_domains => 2 set to string {HostIP}:4433
圖中有句黃色 PHP memory limit 的警告可以無視。
這樣就完成了,無需再在文字介面操作。
現在我們直接去重啟 nextcloud container
1. 無需再理會文字介面,直接點選左邊的 "Containers"2. 對 nextcloud 的 container 打勾
3. 按 "restart"
紅字部分:
{HostIP} = home nas 正在使用的IP ,即在 Part1 你為OMV 設定的固定IP。
就會出現:你的連線不是私人連線
1 的位置會看到網址前有 https,代表已經啟用SSL加密。
出現不安全是因為瀏覽器無法在第三方找到這個SSL的登記憑證,是正常情況,因為我們用的是Self-Signed Certificate (自我登記憑證), 可以無視。
按2 = "進階"
點選 "繼續前住"
如果你使用的是 mac 系統,請在這個頁面時,默默輸入 thisisunsafe 就可以進入了。
注: thisisunsafe 即 this is unsafe 拿掉了空白鍵,輸入時不會有任何顯示或表示。
後話:
有了 SSL 之後,我們就可以更安心在外網使用自架 nextcloud 了。
Self-Signed Certificate 也有缺點,由於我們沒有購買/使用第三方的認證服務,所以瀏覽器會跳出警告,說明無法認證這個加密的可信性,不過由於我們知道那是我們的 home nas ,可以選擇無視警告進行連線;在我們個人使用或小群體使用,這樣是沒問題的,但不適合開放給第三方/客戶使用,因為通常跳出警告時,很易令別人有不良印象。
留言
張貼留言