SSL/TLS: ECDSA証明書のサポート

4D は SSL/TLS を使用して、クライアントサーバー間の通信と HTTPリクエストを保護します。4D は10年以上前から RSA暗号をサポートしており、4D 20 R3 では ECDSA暗号を追加しました。いい機会なので、セキュリティについて少しお話ししましょう。

SSL/TLS は、クライアントサーバー間の通信を暗号化するために使用されるプロトコルです。30年近く世界中で使われていて、堅牢で破られにくく、高速です。4D では、主に 2つの場所で使用することができます: 4Dクライアントと 4Dサーバー間の通信の暗号化と、4D Webサーバーへのリクエストの暗号化です。この両方を暗号化することを強くお勧めします。なお、クライアントサーバー間の通信の暗号化は、4D 18 よりデフォルト設定になっています。

クライアントサーバー通信の暗号化

クライアントサーバー通信の暗号化を有効にするには、データベース設定のクライアントサーバータブを開き、”クライアント-サーバー通信の暗号化” チェックボックスにチェックを入れます。

注記: 現在実装している QUICネットワークレイヤーは、QUICプロトコルに基づいているため、必然的に暗号化されます。したがって、QUICレイヤーを選択した場合には、暗号化が常に有効なため、”クライアント-サーバー通信の暗号化” チェックボックスは表示されません。

SSL/TLSプロトコルを有効にするだけでは、通信を保護するのに十分ではありません。追加で、4D が通信を暗号化するのに使用する証明書を提供する必要があります。4D が提供する証明書は、4D Server のResourcesフォルダーにある key.pem と cert.pem というファイルにありますが、すべての顧客に同じ証明書が提供されているため、これらのファイルを本番環境で使用することは推奨されません。これらは、独自の証明書に置き換える必要があります。

HTTPリクエストの暗号化

Webサーバーの通信を暗号化するには、HTTPプロトコルのセキュアバージョンである HTTPSプロトコルを使用する必要があります。データベース設定の Webタブで、HTTPS を有効にすることができます (デフォルトで有効になっています)。

blank

ここでも、4D が暗号化に使用する証明書を別途提供する必要があります (4D Server と同じ証明書を使用できます)。key.pem と cert.pem を Projectフォルダーの隣に置いてください。

ECDSA証明書

では、証明書について説明しましょう。TLS/SSL で使われる主な暗号化アルゴリズムは 2つあります: RSA と ECDSA です。どちらも破られることがなく、安定していて高速なので、好きな方を選んでください。RSA は業界標準ですが、ECDSA が一般的になりつつあります。そのため、RSA と並行して ECDSA も扱うことにしました。デベロッパーにとって、これらの使い方に違いはありません。証明書がどちらの暗号化アルゴリズムを使っているにせよ、key.pemファイルと cert.pemファイルを正しい場所に置くだけです。

TLS/SSL や暗号化についての詳しい情報は 4Dのドキュメントを参照ください。また、何か質問があれば、ご遠慮なく 4D公式フォーラムでお尋ねください。

Nicolas Brachfogel
- プロダクトオーナー & シニアデベロッパー - Nicolas Brachfogelは、2017年にシニアデベロッパーとして4Dに入社しました(4D Serverとネットワークを担当)。Apple Siliconのリリースを管理するプロダクトオーナーとして、ユーザーストーリーを書いて機能仕様に落とし込み、機能実装が顧客のニーズを満たしているかを確認する役割を担っています。Institut Supérieur d'Informatique Appliquée (INSIA) を卒業した Nicolas は、2001年にソフトウェア開発者としてのキャリアをスタートさせました。JavaとC++で数年間コーディングした後、ゲーム会社のクライアント・サーバー開発を専門に担当。サーバー開発者/アーキテクトとして、多くのゲーム(Dofus Arena、Drakerz、Trivial Pursuit Go!)のサーバーアーキテクチャに携わり、成功を収めてきました。