ionCubeを使用したライセンス管理

こんにちは、牧野です。最近は製品関係をメインにやっています。

昨日からionCube7.0の販売を開始いたしました。
今回はあらためてionCubeの機能の一部を紹介したいと思います。
ちなみに、今回のバージョンアップでは、PHP5.3プログラムへの対応と、WindowsGUIが改良されているのが注目ポイントです。

ionCube PHP Encoderは、PHPのプログラムを暗号化する製品です。
ただ、暗号化してプログラムのコードを読めなくする機能だけでなく
・スクリプトを実行できるサーバを制限する
・ライセンスファイルがない場合に実行できなくする
など、他にもいろいろ強力な機能が搭載されています。
詳しくはこちらからionCubeのページをご覧下さい。

今回は、PHPプログラムを配布する際、クライアントごとに有効期限を設けたライセンスを発行して管理するための方法を、GUI版を使って紹介します。

全体の流れは、次のようになります。

1.特定のファイル名のライセンスファイルがないと実行出来ないように設定してプログラムを暗号化
2.有効期限や実行出来るサーバ環境についての制限を持たせたライセンスファイルを、クライアントごとに作成
3.1、2で作成した暗号化プログラムとライセンスファイルを、各クライアントに配布
4.有効期限が切れたら、ライセンスファイルだけ作成してクライアントに配布

1-1.プログラム暗号化のための設定
ionCubeエンコーダでは、暗号化やライセンスファイル作成に関する設定をプロジェクトファイルに保存します。
設定をプロジェクトとして保存することで、再度同じ条件で暗号化したり、ライセンスファイルを作成するのが楽に行えます。
[File]メニューから[New project]を選択すると、新しいプロジェクトの設定画面が開きます。
[Source]タブでは、暗号化するプログラムが入ったフォルダを指定します。

[Target]タブでは、暗号化したプログラムを保存するフォルダ名と、そのフォルダを格納するフォルダのパスを指定します。

[Restrictions]タブで、ライセンスファイルを必要とする設定にします。
[Encoded files require a license file]にチェックを入れ、ライセンスファイル名とパスフレーズを入力します。
ライセンスファイル名は、なるべくプログラムに含まれるファイルの名前と重ならないようにして下さい。
ライセンスファイル作成時にも、ここで入力したのと同じパスフレーズが必要になります。

※ここで設定するパスフレーズは、クライアントごとではなく暗号化するプログラムごとに設定する用途に使用します。
例えば製品Aと製品Bをそれぞれ暗号化、ライセンス管理したい場合に、それぞれの製品で異なるパスフレーズを設定します。
これで、製品Aのライセンスファイルで製品Bを実行することはできなくなります。

実行できるサーバについての制限情報は、今回は暗号化プログラム自体ではなくライセンスファイルの方に持たせるため、ここでは入力しません。
基本的な設定は以上なので、[OK]ボタンを押して設定画面を閉じます。

1-2.プログラムの暗号化
[Project]メニューから[Build]を選択すると、プログラムが暗号化されます。(横向き三角のアイコンを押してもOKです。)
元のプログラムは変更されません。ターゲットフォルダ内に暗号化したプログラムのフォルダが作成され、その中に暗号化されたプログラムが格納されます。

2-1.ライセンスファイル作成のための共通設定
[License Settings]を選択すると、ライセンスファイル作成時のデフォルト設定を指定できます。
ここでは、有効期限のデフォルトをライセンス作成から365日にしています。
ライセンスのパスフレーズは、先ほどプロジェクトの設定で入力したものと同じになっている必要があります。
作成するライセンスファイルのパスは、作成時にも都度指定する形になります。
ライセンスファイルを保存するフォルダのパスを指定しておくと便利だと思います。

2-2.ライセンスファイルの作成
[Create License]を選択して、作成するライセンス個別の設定を行います。
有効期限、実行するサーバのドメイン名、IP、MACアドレスの制限を設ける場合はここで入力します。
一番下で、ライセンスファイルを作成するパスを指定します。特にクライアントごとにライセンスファイルを分ける場合は、間違って既存のファイルを上書きしないよう気をつけて下さい。

設定できたら、左下の[Geneate License]ボタンを押すとライセンスファイルが作成されます。

あとは、暗号化プログラムとライセンスファイルを、ローダが組み込まれたサーバに設置して実行するだけです。
ライセンスファイルは、プログラム暗号化時に指定したのと同じファイル名でサーバに設置します。ライセンスファイルを置く場所は、暗号化プログラムのディレクトリ内か、それより上の階層のディレクトリ内です。

このようにすることで、暗号化プログラムをクライアントごとに用意することなく、またライセンス期限が切れたような場合もライセンスファイルだけ再発行して配布するだけで管理していくことが可能です。
暗号化だけでなく、ライセンス管理でも威力を発揮するionCubeエンコーダ、興味がおありでしたらぜひ一度お試し下さい。

※2/1より、バージョンアップ版の販売を開始いたしました。
※2/3より、バージョン7.0の評価版をご利用いただけるようになりました。