セキュアTLS接続
バージョン16.10.31以降、"aiROKU"はサーバーとクライアント間の安全なTLS接続をサポートします。しかし、TLSとは何ですか?それは物事をより安全にしますか?インストールはどれくらい難しいですか?サイバーセキュリティの問題はかなり複雑になる傾向があり、そのため、一般的に資格のあるITスペシャリストに任されています。しかし、最終的にはすべてが簡素化され、一般の人々がアクセスできるようになります。これが進歩の性質です。TLS接続についてもう少し詳しく知ってみましょう。
まず、少し歴史を振り返ってみましょう。TLSはTransport Layer Securityの略で、SSL(Secure Sockets Layer)の後継技術です。1990年代初頭、Netscape社(Netscape Navigatorを開発した米国企業)は、クライアントとサーバー間のあらゆる接続を侵入や盗聴から保護する方法を考え出しました。このアイデアを考案したのは、エジプトの著名な暗号学者であるTaher Elgamal博士です。その内容は、クライアントとサーバーの双方が、接続するたびにデータを暗号化する独自の方法を持つ必要がある、というものでした。そうすれば、たとえセッションが誰かに傍受されても、復号化できないので、情報は安全です。これがTLS接続の安全性を高めています。これらはすべて、デジタル証明書(またはセキュリティ証明書)という概念に基づいています。
証明書とは?2つの部屋をつなぐドアのデジタルキーと考えてください。他の鍵でこのドアを開けることはできませんし、鍵を開けることもできません。セキュリティ証明書は通常、サーバーが作成し、最初のやり取りの際にクライアントに送信されます。クライアントはそれを確認するか拒否するかのどちらかです。この一連の手順を親しみを込めてハンドシェイクと呼びます。これにより、サーバーとクライアントは、相互作用のための一定の「基本ルール」(たとえば、1回しか使用できないセッションキーの生成方法など)を受け入れます。そして、第三者に操作されることなく、その鍵を使ってデータの暗号化と復号化を行います。ハンドシェイクに失敗した場合、接続は確立されません。これにより、誰もがクライアントやサーバーになりすまし、相手を騙して特定の情報を明かそうとすることができないようになっています。
最後に、すべてのセキュリティ証明書には署名が必要で、それがないと使用できません。理想的には、サーバーとクライアントの両方から信頼されている第三者(いわゆる「信頼できる第三者」)によって署名されるべきです。これは通常、CA(Certificate Authority)と呼ばれています。サーバーが証明書に署名するには2つの方法があります。実際のCAに申請する方法(有料ではありますが、CAには不足はありません)と、自分で署名する方法(これを「自己署名証明書」と呼びます)です。2番目の方法は明らかにクライアントにとってリスクがありますが、マシンを操作する人たちがお互いに信頼できることを知っていれば、何の問題もありません。このような証明書とハンドシェイクのシステムは、一般のユーザーには見えないところで、ブラウザを使ってさまざまなサーバーにアクセスするウェブ上で常に使われています。このことは、「見えないところにあるものこそ、最高のセキュリティである」ということを証明しています。
ここからは、実際に"aiROKU"で使用することに焦点を当てていきます。まず最初に、サーバーにセキュリティ証明書を生成する必要があります。そのための最適なソフトウェアはOpenSSL: https://www.openssl.org/source/ しかし、これはLinuxベースのシステムでのみ安定した動作を提供しているようです。とはいえ、作成した証明書はどのシステムでも有効なので、WindowsやMac OSを使っている場合は、Linuxを使っている友人に助けを求めるか、仮想マシンを使ってLinuxにアクセスすることになります。これで証明書を生成するには、ターミナルで使える様々なコマンドがありますが、出来上がったファイルの名前がPublicCertificate.pemとPrivateKey.pem、またはPublicCertificate.derとPrivateKey.derのいずれかであることを確認してください。一番手っ取り早いのは、このコマンドをコピーペーストすることです。
openssl req -x509 -sha256 -new -days 3650 -newkey rsa:2048 -nodes -out PublicCertificate.pem -keyout PrivateKey.pem -subj "/C=Co/ST=SN/L=Lo/O=Or/OU=OU/CN=CN"
これで、生成されたばかりの2つのファイルがOpenSSLディレクトリに入りました。
あとは、XeomaのメインディレクトリであるXeoma → Security → Certificateに移動させるだけです。
PublicCertificate.pem と PrivateKey.pem の両方を Server フォルダに入れます (これらは既に入っているファイルを置き換えます)。PrivateKey.pem は特に重要で、あなた以外の誰もアクセスできないようにしてください。さもなければ、あなたのセキュリティが損なわれる可能性があります。これで、すべてのクライアントは、Client フォルダに PublicCertificate.pem を置くだけで、安全な接続が保証されます。1つのクライアントが複数の異なるサーバーに異なる証明書を使って接続する必要がある場合は、すべての証明書をClientフォルダに置くことができます(PublicCertificate1.pem、PublicCertificate2.pemなどの名前で、ただしサーバー上の名前と一致していることを確認してください)。