独自SSL証明書を使ってNextCloudを構築しよう!
自宅サーバ活用術の定番といえばファイルサーバですよね。
NextCloudというOSSを使えば、WebGUIを使えるクラウドストレージ風のファイルサーバを簡単に構築できます。
しかし、初期状態のままではHTTPを使ったアクセスとなります。ゼロトラストが叫ばれている今、社内LAN内の運用はもちろん自宅LAN内の運用でもこれは避けたいところ…
というわけで第二回は、独自SSL証明書を使ってセキュアなNextCloudを構築する方法をご説明します!
NextCloudと独自SSL証明書を使う理由
ファイルサーバとしてNextCloudを使う理由と、独自SSL証明書を使う理由について説明します。
NextCloudを使う理由
WebGUIやアプリを使えるためです。
SMBサーバやFTPサーバと比べ以下のようなメリットがあります。
- ブラウザかアプリがあればアクセスでき、OneDriveなどのクラウドストレージと同じ感じで使える
(スマホでも画像や動画ストリーミング再生ができて便利) - GUIでアクセス制御に関する設定を行い、簡単に認可の仕組みを作ることができる
- 壁紙を推しに変更できる
あとはカレンダーなんかも使えるので、ついでに家族の予定をこれで共有して家のカレンダーをデジタル化するのもいいと思います。
独自SSL証明書を使う理由
元々使っているワイルドカード証明書を導入したり、閉鎖ネットワークで運用したりできるためです。
もともと無料のLet’s Encryptを使う仕組みは用意されていますが、社内用途なんかだと独自SSL証明書を使わなければならない場面は多いのではないでしょうか。
個人用途では…ロマンですね。
やること
ゴール:ラズパイでNextCloudを使ったファイルサーバを構築し、クライアントから使えるようにする。
前提条件:プライベートDNSサーバをLAN内に構築している。
OS:Raspberry Pi OS
- Snappyを使って構築する
- HTTPSで安全にアクセスできる
- ドメイン名でアクセスできる
- ブラウザでサーバ証明書エラーがでないようにする

プライベートDNSサーバの構築については前回の記事をご覧ください!
Snappyを導入する
まずSnappyを導入します。Snappyは、Ubuntuの開発支援を行うカロニカルという英国の会社が開発しているパッケージ管理システムです。これを使うことでNextCloudに必要なソフトウェア(Apacheとかmysqlとか)を一発で入れてくれます。dockerみたいに使えて便利です。
#いつもの
sudo apt update
#Snappyのインストール
sudo apt install snapd
NextCloudを導入する
続いてNextCloudを導入します。
NextCloudのほか必要なソフトウェアとしてApache/PHP/MySQLのインストールと初期設定が行われます。
sudo snap install nextcloud
尚、設定ファイルとユーザがアップロードしたファイルのディレクトリは以下のようになります。
設定ファイル | /var/snap/nextcloud/current/ |
アップしたファイル | /var/snap/nextcloud/common/nextcloud/data/nextcloudでのユーザ名/ |
アクセスするには管理者権限が必要です。
HTTPS化と独自SSL証明書の導入
では本題のHTTPS化と独自SSL証明書の導入に入ります。
ポートの指定
最初にポート番号を指定します。HTTPSでは通常443番を指定します。
sudo snap set nextcloud ports.http=80 ports.https=443
チェーンファイルの用意
独自SSL証明書を導入しHTTPSを有効にするには、以下3つのファイルが必要です。
ファイル名 | 説明 | 拡張子 |
---|---|---|
秘密鍵 | サーバの秘密鍵ファイル | .key |
サーバのSSL証明書 | CAから発行されたSSL証明書 | .crt |
チェーンファイル | 中間CAとルートCAの証明書をくっつけたもの | .crt |
チェーンファイルが手元になければ、新しく用意します(既にある方は次項まで飛ばしてください)。
ここではWindowsで用意する方法をご説明します。
まず、サーバのSSL証明書を右クリックして「開く」を選択し、出てくるウィンドウで「証明書のパス」タブをクリックします。すると、サーバのSSL証明書→中間CAの証明書*n→ルートCAの証明書と証明書チェーンが確認できます。
メモ帳で新しく“ファイル名.crt”というファイルを作成し、それぞれの証明書をそこに順に追記していくことで作成していきます。


確認できたら、次に中間CAの証明書を表示しコピーします。サーバ証明書直上の中間CAを選択し、「証明書の表示」をクリックします。すると新しいウィザードが開きますので、「詳細」タブから、「ファイルにコピー」と進みます。「証明書のエクスポートウィザード」が立ち上がりますので、2つ目の画面で使用する形式に「Base 64 encoded X.509 (.CER)」を選択し、適当なディレクトリにエクスポートします。




エクスポートできたらファイルをメモ帳で開きます。ファイルの内容すべて(”–BEGIN~~~–“と”–END~~~–“を含む)をコピーし、チェーンファイルへコピペしてください。


これで中間CAの証明書をチェーンファイルに追記できました。
以降、証明書チェーンの下から上へ向かってこの作業を繰り返し、最後がルートCAになるように追記します。
チェーンファイルの記載内容は最終的に以下のとおりになります。
-----BEGIN CERTIFICATE-----
中間CA1の証明書
-----END CERTIFICATE-----
中間CA2の証明書
-----END CERTIFICATE-----
・
・
・
-----BEGIN CERTIFICATE-----
ルートCAの証明書
-----END CERTIFICATE-----
これでチェーンファイルの用意は完了です。
3つのファイルの配置と適用
3つのファイルを用意できたら、“/var/snap/nextcloud/current/certs/”配下に“custom”ディレクトリを作成し、customの中に3つのファイルを配置します(アクセスに管理者権限が必要です)。
certs
|__ custom(新規作成)
|__ private.key (秘密鍵)
|__ cert.crt(サーバのSSL証明書)
|__ chain.crt (チェーンファイル)
#ファイル名はなんでもいいです
できたら3つのファイルをnextcloudに設定してHTTPSを有効にします。
sudo snap run nextcloud.enable-https custom -s サーバのSSL証明書 秘密鍵 チェーンファイル
#フルパスとか相対パスではなく、単純にファイル名だけでいいです(ex: cert.crt private.key chain.crt)。
とりあえずオレオレ証明書を使う場合は、特にファイルを用意することなく以下のコマンドでHTTPSを有効にできます。
sudo snap run nextcloud.enable-https self-signed
これでHTTPS化と独自SSL証明書の導入は完了です!
ウェブブラウザからhttps://FQDNでアクセスしてNextCloudのセットアップ画面が表示されるはずです。





FWの設定もお忘れなく!
信頼できないドメインを介したアクセス
「信頼できないドメインを介したアクセス」とエラー画面が表示される場合があります。


その場合は、“/var/snap/nextcloud/current/nextcloud/config/config.php”の‘trusted_domains’のところにFQDNを追加します。
#/var/snap/nextcloud/current/nextcloud/config/config.php
'trusted_domains' =>
array (
0 => 'FQDNを書く'
)
#php-fpmとapacheをリスタート
sudo systemctl restart snap.nextcloud.php-fpm
sudo systemctl restart snap.nextcloud.apache
☆壁紙を推しにするべ
壁紙を推しにするには、NextCloudのセットアップ終了後に「設定」→「テーマ」からできます!
おわり
以上、独自のSSL証明書を使ったセキュアなNextCloudの構築方法でした。
個人の方でも、DV証明書ならconohaの割引きっぷを使っている方は無料で手に入るほか、さくらのSSLでも1000円あればお気軽に調達できますので、ぜひ一度お試しください!
では!
コメント