• Ubuntuに関連したハード、ソフトの備忘録サイトです

サイトのセキュア化(https化)について(投稿記事確認中)

サイトのセキュア化について、何か手こづったので参考になればとハマったところをまとめておきたいと思います。取り敢えず、サーバーは現行のUbuntu16.04LTSです。できるだけ早いうちに、18.04LTSにバージョンアップしたいと思っています。サイト管理者の宅内では、18.04LTS系を切り替えています。WebサーバーはNginxです。Apacheよりも高性能かつ高速で、Webサーバーでサーバーサイドのアプリケーションを作る際に、WSGIが使えて便利です。

今、Pythonが人工知能(AI)用の言語として世界的に注目されていますが、ApacheとPythonをつなぐのは易しくはないと感じます。PHPが何故、普及したかというと、Apache用のPHPモジュールが準備されていて、簡単にApacheに組み込めるからだったと思います。言語仕様としては汎用性が高いPython(ニシキヘビ)が面白く、Ubuntu始めLinux系のディストリビューションでは、Pythonが大きな役割を果たしています。パソコンで動くソフトを作成できるのはもちろん、サーバーサイドの言語としてもOSの補助言語としても使われています。

あの、Googleの公認言語はC/C++、JavaJavaScript、Goに加え、Pythonと言われています。他の言語を使用する場合は、申請して許可を知らなければなりません。

それはともかくとして、Webサイトのセキュア化(https化)には公認のサーバー証明書(SSL証明書)が必要であり、ブラウザが認識する公認証明書は高価なものから安価なものまでたくさんあります。さくらインターネットのサイト(https://ssl.sakura.ad.jp/)に紹介されています。証明書の種類についてはこちらのサイトに任せるとして、SSL証明書の値段はピンからキリまでさまざまなので、会社で使うサーバーは別として、ネットショップは例外として、個人で使うサーバーは高い使用料を払う必要はないでしょう。

なお、宅内(SOHO)で実験する(SSL対応のサーバーを構築して動作実験する)場合は、別に公認のSSL証明書を導入する必要は全くありません。それについては、有名な「Server World」のサイト(https://www.server-world.info/)をご覧ください。様々なディストリビューションでのSSL化が分かりやすく紹介されています。

サイト管理者の経験から気づいたことを二点述べます。まず第一は、SSL化はサーバーに秘密鍵と公開鍵(サーバーがフィッシングサイトなどのブラック・サイトでないことを証明するサーバー認証書)をインストールし、NginxなどのWebサーバーの設定に双方の鍵を書き込むことが中核の作業になります。ただし、秘密鍵(公開するサーバーに秘密鍵を置くというのも妙ですが)と公開鍵のペアが正しいかどうかをブラウザが調べますので双方が必ずペアでなければなりません。

ところが、秘密鍵にはいろいろな作り方(オプションの選択)がありますので、必ず、SSL証明書を発行するマニュアルを熟読して、各社の認証書に適合的な正しい作り方で秘密鍵を作らなければなりません。そして、この秘密鍵から、csrというテキストデータを作成し、これを認証書作成会社に送り、管理しているサーバーに適合的な認証書を送ってもらうという手順を踏みます。

CSRとは「Certificate Signing Request」の略でSSLサーバ証明書発行に必要なテキストデータです。秘密鍵やコモンネーム(FQDN)、組織名、部署名等が含まれています。認証会社は提供されたCSRと申し込み情報を元に内容を精査してSSLサーバー証明書を発行します。コモンネームとは、サーバーの名前のことで、普通は、wwwにドメイン名を付け加えたものです。

普通ならば、秘密鍵、csrともにopensslを使って作成しますが、オプションの付け方がどうも各社各様ですので、マニュアルをよく読まないでサイトとか書籍を読んで作成すると当然、認証書作成会社が適合しない認証書を送って来て、アウトになります。つまり、NginxなどのWebサーバーが再起動しなくなります。なので、インストールする前に、秘密鍵と認証書が適合しているかどうかを調べておく必要があります。調べ方は、のちほど、説明します。

第二に、普通は認証書作成会社の送ってきた認証書(テキストファイル)と中間ファイルを結合して、サーバーにインストールする認証書を作成するのですが、これが、マニュアル通りに作成しても、誤ったものになる公算が極めて大きいことです。現象としては、Webサーバーを再起動する際に「設定ファイルが間違っているよ」と怒ったメッセージを出して、真っ青になることです。なので、秘密鍵と認証鍵を付け加えた設定ファィルが正しいことをテストしておく必要があります。Nginxの場合は、# nginx -tです。これに、「Failure」との結果しか出てこない場合もあります。

この辺りは、作成会社がマニュアルを充実させるとともに電話もしくはメールでのサポート体制を強化して欲しいものです。とりわけ、電話は番号があるものの、まず、つながりません。なので、コールセンターを設置すべきですが、申請側のコスト負担になって跳ね返ってきますので、メールでの迅速なサポートをお願いしたいところです。

第三に、全てがうまく行っても、ブラウザでURLを入力するためのテキストボックスに警告マークが依然として出てしまうことです。その場合には、サイトのコンテンツの中に、http通信の記述が残っている証拠です。WordPressの場合は、サイトのURLをhttpからhttpsに変更し、管理画面に入って「保護されたサイトです」との表示が出れば、コンテンツにhttp通信の残滓が残っている証拠です。確認はなかなか難しいですが、CTRL+Uでソースコードのページが出てきますので、CTRL+Fで「http」で検索して見つけるしかないです。ただし、まあ、完全一致のオプションはないので、たくさんあるhttpsの中から探すことになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA