レ点腫瘍学ノート

Top / 日記 / 2021年 / 5月1日

LAN内のWebページに自己署名証明書でHTTPS接続を可能にする

最近のNASはLAN内に簡単にWebページを設置できる

Synology NASは非常に高機能で、自宅Webサーバーを簡単に設置することもできます。うちのSynology NASはファイルフォルダーとして使用しているほか、自宅WebサーバーとしてApache 2.4+PHP 7.4を稼働させて業務で使用する自分用のPukiwikiを設置しています(インターネットには公開せずLAN内のみからアクセス可能)。また、そのSynology NAS上でVPN serverを稼働させてOpen VPNで外部からLAN内にアクセスできるようにしています。こうすることで、VPN接続した端末では自宅外からもLAN内のPukiwikiにアクセスすることができるようになっているのです。

さて、Synology NAS上のApache 2.4で公開したウェブページはHTTPSを用いた暗号化通信を利用することができますが、この場合の証明書の設定がちょっとややこしいという問題があります。近頃のレンタルサーバーの場合であれば、独自ドメインを使ったサイトでもLet's encryptの証明書を使ったSSL通信が無料で利用できますので、ドメイン利用料のみでHTTPSを使ったウェブサイトを構築できます。しかし自宅Webサーバーで独自ドメインに対して発行したLet's encryptのSSL証明書を使うのは若干手間がかかります。

27eda7b291_url.png

さらにうちのLAN内のPukiwikiは独自ドメインですらなく生のローカルIPアドレス 192.168.XXX.XXX というURL上においてあります。192.168.〜に対してLet's encryptの証明書を発行することはできません。となると、192.168.XXX.XXX でHTTPS通信を行うには自己署名証明書(いわゆるオレオレ証明書)を使うしかなさそうです。

自己署名証明書(オレオレ証明書)で証明書の信頼性エラーの警告を表示しないようにする

Synologyのウェブサイトにオレオレ証明書でHTTPS接続するときに証明書の信頼性エラーの警告を表示しないようにします。

証明書の発行

まずDiskStationで証明書を発行します。

「コントロールパネル→セキュリティ→証明書」と進み、「追加」を選んで証明書を作成する画面に進みます。

27eda7b291_0.png
27eda7b291_1.png

どうせLAN内でしか使用しない自己署名証明書なので会社名などはテキトーでかまわないと思います。

27eda7b291_3.png
27eda7b291_7.png

証明書が完成したら下記のような証明書一覧の中にさきほど作成した証明書が配置されているはずです。

27eda7b291_4.png

証明書が作成できたら、「追加」タブの中から「証明書をエクスポート」を選択します。zip ファイルでダウンロードできるので、これを解凍します。中には以下のような4つのファイルが含まれているはずです。なお拡張子は古いバージョンのディスクステーションの場合は若干異なる可能性があります。

27eda7b291.png

上記の4つのファイルが生成されます。このうちsyno-ca-cert.pemをMacにインストールしておきます。

MacやWindowsに証明書をインストールする

ダブルクリックするか、またはキーチェーンアクセスにドラッグドロップで簡単にインストールができます。Windowsの場合は右クリックでインストールできます。

Firefoxに証明書をインストールする

Firefoxの場合はMacやWindowsなどのOSに証明書をインストールしただけではエラー表示が消えてくれません。ブラウザに証明書をインストールする必要があります。

27eda7b291_ff.png

Firefoxの設定画面から「セキュリティ→証明書→証明書を表示」へと進みます。
さらに「証明書マネージャー」が表示されたらその中から「認証局証明書」のタブをクリックし、「読み込む」からsyno-ca-cert.pemを読み込みます。これでブラウザを再起動するとFirefoxでその証明書が有効になります。

Firefoxへ証明書ファイルをインポートするには | GMOグローバルサイン サポート
https://jp.globalsign.com/support/faq/559.html

iPhoneに証明書をインストールする

iPhoneに証明書をプロファイルとしてインストールする

先ほどのsyno-ca-cert.pemファイルをAirDropなどでiPhoneに転送してあげましょう。するとiPhone側で「設定→一般」からプロファイルのインストール画面に進めるので、そのままインストールしてあげます。

ルート証明書を登録する(iPhone/Safari) | 【カオナビ】サポートサイト
https://support.kaonavi.jp/function-admin/secure-access/025/

iOS 13以降ではプロファイルをインストールしただけではSafariの証明書エラーの警告表示は消えません。インストールしたプロファイルの証明書を「証明書信頼設定」で全面的に信頼するという設定をしてあげる必要があります。

iOS 13では、Safari以外のブラウザ(iOS版chromeなど)では証明書のインストールはできないようです。

証明書信頼設定

設定画面から「設定→一般→情報→証明書信頼設定」の順に進んで、「ルート証明書を全面的に信頼する」で、証明書に対する信頼を有効にします。詳しくは下記のサイトに解説があります。

iOS や iPadOS で手動でインストールした証明書プロファイルを信頼する
iOS 10.3 以降および iPadOS では、証明書ペイロードを含むプロファイルを手動でインストールした場合、SSL 通信に対してその証明書が自動的には信頼されません。 
https://support.apple.com/ja-jp/HT204477

これで、FirefoxからアクセスしてもiPhoneのSafariからアクセスしても、ちゃんとSSLの南京錠のマークが表示されますが、Safari以外では初回アクセス時には危険なサイトであるという警告が出てしまいます。

オレオレ証明書はどこで使っても良いわけではない

上記の方法で自己署名証明書(オレオレ証明書)を使って自宅Webサーバーに設置したサイトとHTTPSで接続することができるようになりましたが、オレオレ証明書はインターネットの何処で使っても安心できるものではありません。むしろ広いインターネットでは安易に使用せず、LAN内(VPN内を含む)での使用にとどめておくべきでしょう。この問題については下記のサイトが参考になります。

オレオレ証明書を使いたがる人を例を用いて説得する - Qiita
TIS Engineer Advent Calendar 2015 4日目はExcelから予定を変更して証明書のお話です。 はじめに SSLサーバ証明書を用いたHTTPS通信は一般的になってきましたが、社員向けWebサービスなど...
https://qiita.com/Sheile/items/dc91128e8918fc823562
ローカルドメインのSSL証明書はどうするのが良いか - designetwork
内部的なドメイン(Internal Domain Name)として使用される.local。 test.local, test.internalといったローカルドメインを使用しているケースが多い。 ローカルドメインを使用している中で発生する問題のひとつである「SSL証明書をどうするか?」という問題の対応を記載する。 .localドメインの証明書の問題 詳細はこちらの通り 概要としては、.local, .internalといったドメインはジェネリックトップレベルドメイン(gTLD: generic Top Level Domain)(.com, .jpなど)ではなく、公的には認められていない。それ…
https://designetwork.daichi703n.com/entry/2016/12/16/local-domain-ssl-cert

この記事に対するコメント

このページには、まだコメントはありません。

お名前:

更新日:2021-05-01 閲覧数:3301 views.