投稿

8月, 2016の投稿を表示しています

QNAP の Web UI にログイン不可能になった場合の対処法

仮想ホストの HTTPS や証明書の設定をしていた時、何かの拍子、というか XXX.myqnapcloud.com の証明書の設定をリセットした拍子に、Web UI にログインできなくなり、困った状態になった。延々と Web 画面がリダイレクトされるループ状態になってしまう。 原因は、デフォルトでは、Web UI の HTTP ポートが 80、HTTPS ポートが 443 で、仮想ホストの Web サーバーの HTTP ポートが 8080、HTTPS ポートが 8081 のところを、Web UI と仮想ホストで入れ替えて、Web UI が HTTP(8080)と HTTPS(8081)、仮想ホストが HTTP(80)と HTTPS(443)にしていた。さらに、Web UI を HTTPS のみでログインできるようにして、HTTP ではログインできないようにしていた。ポート設定が、証明書のリセットのタイミングで Web UI のポート設定がデフォルトに戻り、HTTP はログインを拒絶して HTTPS にリダイレクトするのだが、リダイレクト先が間違っており、仮想ホストの無効なポートへのアクセスとして処理されて Web UI の HTTP へとリダイレクトを戻す、というループに陥ってしまったようだ。 最悪、NAS の設定をリセットして再起動すればいいわけだが、SSH によるログインはまだできる状態だったので、リセットが避けられればそれに越したことはない。情報を検索すると、 QNAP のフォーラム にまさしく同じ状況に陥っている人がいて、達人の pwilson さんが対処法を回答していた。お蔭様で、設定リセットすることなく、復帰することができた。 pwilson さんは一連のコマンドをアドバイスしてくれているが、僕のケースでは、HTTP でのログインさえ再び有効化すればよかったので、SSH で、 setcfg System 'Force SSL' '0' /etc/init.d/Qthttpd.sh restart /etc/init.d/stunnel.sh restart だけ実行して、HTTP でのログインを有効にして、あとは、HTTPd と stunnel を再起動するだけで十分だった。 それで Web UI にログイン

SSLLabs のテストで A 評価を得る

イメージ
中間証明書の問題はクリアしても、 SSLLabs のテスト は、RC4 を使っているせいで B 評価となる。ところが、myqnapcloud の方は A 評価なのに気付いた。 これもおそらく、QNAP の中の人が、仮想ホストでの使い勝手を考慮していないためだろう。 myqnapcloud の設定は、/etc/config/apache/extra/apache-ssl.conf ではないかと推測し、その SSLCipherSuite の設定を /etc/config/apache/extra/httpd-ssl-vhosts-user.conf に移植してみた: - SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!SSLv2:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM + SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL

QNAP の仮想ホストで SNI

昨日はどうにか仮想ホストでちゃんと中間証明書を有効にする方法を確立した。さらに一日経って、頭が整理できて、全体的により洗練されたやり方に行き着くことができた。昨日の成功をベースにして SNI(仮想ホストのそれぞれで別々の証明書を使い分けること)も余裕でできることがわかったので、それも含めて、全体を整理し、洗練したやり方になったので、それをまとめておこうと思う。 Web サーバーのポートの設定 Web UI 用のポートは「システム設定 > 一般設定 > システム管理」で 8080(HTTP)と 8081(HTTPS)に設定した。さらに、「HTTPS のみを使用する」設定にした。 Web サーバーのポートは「Webサーバ > Webサーバ」で 80(HTTP)と 443(HTTPS)に設定した。さらに仮想ホストの設定で、 443(HTTPS)の設定の仮想ホストだけをエントリーした。 StartSSL での証明書の取得 StartSSL で、仮想ホストそれぞれの証明書と、XXX.myqnapcloud.com 用の証明書もついでに取得する。これらの中間証明書はすべて共通(StartSSL)の中間サーバーのものとなるので、中間証明書は別々に用意しなくてもいいのが洗練されたやり方となるポイント。 それぞれの Web サイト認証は、「Website Control Validation」のリンクをクリックして、認証用の HTML をダウンロードし、ウェブサイトのルートに設置してから、認証ボタンを押して、認証を成功させることができる(認証後は、認証用 HTML を削除して構わない)。ちなみに、XXX.myqnapcloud.com のルートは、/share/Web そのものである。 XXX.myqnapcloud.com 用の証明書の設定 XXX.myqnapcloud.com(Web UI)用の証明書は、Web UI から「システム設定 > セキュリティ > 証明書とプライベートキー」で行える。StartSSL からダウンロードした zip の中の さらに ApacheSever.zip の中の 2_XXX.crt を証明書としてアップロード、秘密キーには、StartSSL のツールボックスの「Decrypt Private

仮想ホストで中間証明書を有効にする方法

イメージ
QNAP で HTTPS のために SSL 通信用のデジタル証明書をセットアップできたと思っていたら、PC 等他の環境では問題がないものの、Android の Chrome でセキュリティ警告(NET::ERR_CERT_AUTHORITY_INVALID)が出るという問題に直面した。 SSLLabs のテスト では incomplete chain や extra download と言われる。 丸一日かかって、どうやら完全に問題を克服することができた。 だいたい、こういうノウハウというのは、英語の情報(QNAP のフォーラム等)を参照すればどうにかなるもので、ほとんどのプロのエンジニアの人でも、正解となる先人の情報をどう見付けてくるかという話で、それをそのまま自分のブログに記録しているだけのケースが基本だろう(特に日本語においては)。(プロではないただのエキスパートなだけの)僕も、そういうつもりでいたのだけど、今回は、既存の情報が、低レベルなものしか見付からず、結局、自分の要求する水準のものを実現するために、自分でオリジナルに解法を確立する他なかった。 まず、何が馬鹿馬鹿しいかというと、QNAP の Web UI のセキュリティ設定があって、あそこで証明書を設定するものだと思っている人がほとんどだと思うのだが、あれがまず、騙し。あれって、myqnapcloud.com の Web UI 用の Web サーバーにしか関係がない、というかその用途しか、QNAP の中の人も念頭にない。仮想ホストで、独自ドメインを使って Web サーバーを使う場合のことは、全く蚊帳の外という……。 ほんで、英語の情報をどんなに探し回っても、Web UI 用の Web サーバーに対する証明書のセットアップについて、中間証明書を有効にする方法ばかり。それも古い情報が多いなと思ってたら、Web UI 用の Web サーバーについては、Web UI から中間証明書がコピー&ペーストで設定できるように今では対応済なんだから、当然。 もう、しょうがないので、最後は「ランボー怒りのリバースエンジニアリング」。Apache 関連のコンフィグを眺め回して、試行錯誤繰り返して、やっと仮想ホストでデジタル証明書を中間証明書を含めて適切に設定する方法を突き止めた。 httpd-ssl-v

Entware-ng で最新の Perl 環境

イメージ
QNAP の AppCenter で色々と追加パッケージをインストールできるという話だけど、Perl のバージョンが 5.10 というのはやる気がなさ過ぎる。 ……で、そもそも、QNAP のサーバーは初めて使うので、元々 Optware だとかのその手の類のものは何もインストールされていない状態だったのだけど、調べてみると、Entware、Optware、QNAPware、Itsy OPKG というのは、ぜ〜んぶ古くて、今は Entware-ng が活きてるものらしい。しかし、ネットで QNAP の情報を調べても、特に日本語では、古い情報が比較的多く残ってるので、この点は要注意だと思った。そこまで QNAP を使い倒しているような人が少ないせいだと思う。 Entware-ng については非常に情報が少なく、さらに、自分の使っている HS-210 で使えるかどうかも全く不明な状態だったが、今まで AppCenter も使ったことのない状況で、いきなり、 apps.qnap.community というサイトから qpkg をダウンロードし、AppCenter の設定からファイルを指定して手動でインストールするという、冒険に出た。全く確信はなかったが、これ以上情報を調べるのはもっと面倒臭かった。 すると、インストールは簡単に終ったようで、AppCenter のマイアプリに Entware-ng のアイコンが加わっているので、アンインストールも簡単そうだ。 それで、次に、ちゃんと動くのかどうか、SSH でログインしてみた。Perl が目的だったから、perl -v したが、何も反応なし。 perl -v -sh: perl: command not found どうやら、Entware-ng がインストールされた状態で、Entware-ng を使って、Perl などの個別のモジュールをインストールするようだ。それには opkg コマンドを使うらしい。Ubuntu の apt-get みたいなものだろう。下のような流れで Perl をインストールした: opkg update Downloading http://pkg.entware.net/binaries/armv5/Packages.gz. Updated list of availabl

QNAP の Apache で .htaccess を有効化

QNAP の Apache では、.htaccess がデフォルトでは無効化されているので、有効にするには、apache.conf の設定を 1 ヶ所、変更する必要があります。 <Directory /> Options FollowSymLinks - AllowOverride None + AllowOverride All Order deny,allow Deny from all </Directory> apache.conf は /etc/config/apache/apache.conf にあります。vi を使って編集してもいいですが、僕の場合は、scp を使ってローカルにコピーし、gedit で編集して、scp でアップロードして戻すやり方で作業しています。