サーバ構築・運用の最近のブログ記事
プログラム流出を抑えるための対策を検討中。
自分の知ってるプログラムがionCube PHP Encoderを使っていて、
値段も許容範囲だし使い勝手も良さそうだなと思っていたのですが、
PHP5.2.5以上だと、dl関数の挙動が変わっている関係で、
ソフトが稼働するサーバの条件が厳しくなっているようです。
5.2.5以前だと、PHPのdl関数でロードするモジュールのパスに制限はありませんでした。
そのため、共用サーバのような、php.iniをいじることができないサーバでも使用することができました。
しかし5.2.5以降、dl関数ではextension_dirフォルダのファイルのみがロードできるようになったようです。
おそらく、セキュリティに配慮して、ということなのでしょうけど。
導入対象のサーバとして考えているカゴヤの専用サーバ、
動作確認用のサーバで確認してみると、PHP5.2.8が導入されていました。
php.iniもしくはhttpd.confを書き換えることができれば良いのですが、
このプランはroot権限を使えないため、不可能。
何か方法はないかと思って色々調べていると、このサーバ、
どうやらZendOptimizerが入っている模様。
つまり、ZendのPHPソース暗号化ソリューションの
Zend Guardを使ってエンコードしたコードを動作させられるということ。
とは言え、価格を見てみると一年ライセンスで15万、永久ライセンスは42万とか...さすがに高すぎる
で、ふと、Zendの英語サイトを見てみると、ダウンロード版が$600らしい。なんと!
日本語版と英語版の違い、Webには説明がないけど見たところではメニューが違うだけな気がする。
そもそも、ローダーのZendOptimizerが共通なので、大きく違うはずもないんだけど。
それどころか、ライセンス登録画面も非常に似ていて、まさか、ライセンスファイル一緒じゃないだろうなあ...
- 英語版を購入($600)
- 日本語版のトライアルをダウンロードして、英語版のライセンスを適用
- 日本語版使える!
とか、ありなんだろうか。
ま、とりあえず、英語版(トライアル)をインストールして、
きちんとエンコードできるか(主に日本語の部分)確認してみます。
いつも戸惑うmod_rewrite。
mod_rewrite サンプル集
http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html
mod_rewrite - QSAフラグ
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%A5%E9%A5%B0
[QSA] 置換元にクエリ文字列(?~)があった場合に、置換後にも負荷される。
mod_rewrite サンプル集
http://tech.bayashi.jp/archives/entry/techweb/2007/001981.html
301を投げたり、アクセスを拒否したり。
RewriteRuleをいろいろ試す会:RewriteCondを使う
http://studyroom.g.hatena.ne.jp/pha/20070511/p1
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ~
フォルダやファイルが存在しない場合にのみルール適用
RewriteCond - RewriteRuleの条件を設定
http://www.ksknet.net/apache/rewritecond_rew.html
mod_rewriteで置き換えた文字列をエスケープする
http://snak.tdiary.net/20080118.html
エンコードして渡すBオプション(2.2.6以降)
RewriteMapと自作スクリプトで対応もOK
ただしRewriteLock/RewriteMapはhttpd.confに書く必要あり
Apache Module mod_rewrite
http://httpd.apache.org/docs/2.2/ja/mod/mod_rewrite.html
mod_rewrite - RewriteMap
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20RewriteMap
RewriteRuleについて
http://d.hatena.ne.jp/hato_mune/20080928/1222569429
結局、携帯電話も使えるGeoTrustに。
超安ServerTastic経由で申し込み。
https://www.servertastic.com/order/quickssl-premium/
https://www.servertastic.com/quickssl-premium/
から、CLICK TO ORDER で注文画面へ、
申し込み期間を選択。
個人情報を記入後、申し込みで決済完了。
rapidssl.comから、メールでGetTrustへのリンクが通知される。
https://products.geotrust.com/orders/invite.do?pin=xxx
上記リンクにアクセス。日本語にも対応しています。
インストール対象サーバで秘密鍵(.key)と証明書発行要求(.csr)を作成。
このあたりを参考に。
https://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=AR876
http://www.verisign.co.jp/ssl/help/csr/capache_new.html
Eメールアドレス以降は未入力にしました。
作成したcsrを貼り付けて、申し込み入力が完了すると、
指定したメールアドレス(adminとか@対象サーバ)に、メールで証明書(.crt)
が届く。
それをサーバに設置して、apacheから.keyとともに設定する。
CentOSだと、既にSSL専用の設定ファイルができているので、
/etc/httpd/conf.d/ssl.conf
を編集する。
証明書
SSLCertificateFile /etc/apache2/ssl.crt/server.crt(証明書ファイル)
秘密鍵
SSLCertificateKeyFile /etc/apache2/ssl.key/server.key(秘密鍵ファイル)
鍵や証明書は、パーミッションを600にしておきましょう。
いくつか直面した問題。いずれも解決済み。
1.設定したアドレスにメールが来ない(汗)
→ sendmailの受信設定するの忘れていた。
DAEMON_OPTIONS修正で解決
2.証明書を設定したら、apahceが起動しなかった。
→ メールからコピペしたときに、
いらんところで改行がはいっていたのが原因。
再コピーで解決。
ホントはもう少し詳しく書こうと思って画面のキャプチャを少しとったけど、
面倒なので止めてしまいました。
開発しているサイトが(今後)携帯電話対応するので、
携帯電話からも使えるSSL認証局を検索。
携帯対応、負荷分散環境で最適な、SSL証明書選び
http://www.goodpic.com/mt/archives2/2008/10/ssl.html
携帯電話とSSLルート証明書
http://triaez.kaisei.org/~kaoru/ssl/cell.html
モバイル端末ごとの対応状況について、
ソフトバンクはリンクが移動してる
http://creation.mb.softbank.jp/download.php?docid=102
MOBILE CREATION
http://creation.mb.softbank.jp/
に会員登録が必要
日本ベリサイン
http://www.verisign.co.jp/
ベリサインは法人でないと登録不可。
GeoTrust
http://www.geotrust.co.jp/resources/compatibility_listing/index.html
ServerTastic
https://www.servertastic.com/order/quickssl-premium/
超安いGeoTrust販売代理店(英語)
グローバルサイン
http://jp.globalsign.com/
ブログがひとまず落ち着いたので、さっそく既存のサービスをこちらのドメインに移してみた。
たびのおもいで(仮称)
同じサーバ内ということもあって、
グーグルマップのkeyとパス情報を変更するだけで移行完了。
ただし、元URLにアクセスがあった場合に現URLに自動でリダイレクト(転送)させる処理を追加するところでちょっと悩んだ。
.htaccessに設定する Redirect permanent、一つ目の引数にはDocumentRootからのパスを指定するらしい。
で、さくらインターネットでは複数ドメインを一アカウントで管理できるのだが、サブドメインにアクセスがあった場合、そのrootがDocumentRootとして認識されているようだ。
例えば、オリジナルドメインが /home/xxx/www/ 、サブドメインが /home/xxx/www/sub/ で、 /home/xxx/www/sub/test/ 以下を転送したい場合は、 /sub/test/ を指定すれば良いらしい。
.htaccessでリダイレクト機能を利用する方法
