カテゴリー別アーカイブ: LAMP[Linux, Apache, MySQL, PHP]

個人用電子メール証明書を無料で入手する

 お名前.com VPSでもさくらのVPSでもサーバ証明書としてSSLボックス RapidSSLを入れて活用しているわけだけど、そのほかにメール通信も保護したい。
 電子証明書発行機関としてそこそこ有名なCOMODO社が個人利用向けに無料で電子メール用証明書を発行しているので、それを利用する。
 こちらのサイトから申請することが出来る。
 有効期間1年で電子メール署名・暗号化に使うことが出来る。 期限が来たら再発行を申請すれば新しい証明書を受け取ることが出来る。
 相手方と鍵を交換していないとメールの暗号化は出来ないが、署名は出来る。
 署名は、秘密鍵とメールの文書から生成してメールに添付し、相手側で公開鍵により確認することで、メールの文面が改ざんされていないことを証明する方法だ。
 暗号化したメールは相手が対応していない環境で受信できないが、署名は添付ファイルがついてくるだけなので、確認をしなければ添付ファイルを無視して本文を読むことが出来る。
 ネットワーク社会で少しでもメールの信頼性を向上させるため、出来るだけ導入しておきたいところだ。

 なお、証明書を入れたマシンが故障したりして、期間内に同じアドレスで新しい証明書を取得する場合には、既存証明書の無効化(Revoke;Revocation)が必要となる。
 COMODOのメール証明書無効化はこちらのページから行うことが出来る。

(365)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | タグ: , | コメントをどうぞ

JavaScript/jQueryでファイルアップロードフォーム(インプットタグ)の拡張子を確認する

<form name=’test’>
<input name="picture_file" type="file" >
</form>

 こんな感じのファイルアップロードフォーム(インプットタグ)を用意して、ファイルをアップロードさせる時に、タグの属性(accept)でファイル形式(拡張子)を設定できるけど、ブラウザ依存なんで、JavaScriptでアップロードファイル名の拡張子をチェックしたい時の開発パーツ(jQuery利用)

<form name=’test’>
<span id=’picture_file_span’><input name="picture_file" type="file" id="picture_file" onchange="extchk(‘picture_file_span’, $(this).val());"></span>
</form>

<script type=’text/javascript’ src=’https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’></script>
<script type="text/javascript">
    function extchk(id, fn){
        var fnsplt = fn.split(".");
        var ext = fnsplt[fnsplt.length – 1];
        switch(ext.toLowerCase()){
            case "jpg":
            case "jpeg":
            case "gif":
            case "png":
                return true;
                break; //未到達コード
            default:
                alert(‘未対応のファイル形式です’);
                jQuery(‘#’+id).html(jQuery(‘#’+id).html());
                return false;
                break; //未到達コード
        }
    }
</script>

 ファイルインプットタグの変更イベントで、設定したファイル名の拡張子がcaseに列挙されていればtrue,それ以外はアラートメッセージを出してファイルインプットをクリアした上でfalseを返している(IEではfile inputタグのvalをクリアすることは出来ないので、inputタグをspanで括って、中身を書き直すことでクリアしている)
 最初、jQueryでバインドしたが、htmlの差し替えでファイルインプットをクリアするとバインドが解除されるので、タグのonChangeに載せている。
 ファイルの中身を確認しているわけではないけど、簡単なチェックにはなるからWeb開発時に使い回せるだろう。

テストページ

ソースの整形にはHTML特殊文字をエンコードする on さくらVPSを利用している。

(2360)

カテゴリー: jQuery | コメントをどうぞ

Web開発のお供にBootstrap

 ツイッターが提供しているBootstrapっていうライブラリ(?)がある。
 Web開発をする時、ページのスタイルを作るのが結構面倒なんだけど、Bootstrapには基本的な枠組みとかフォームパーツのアレンジとかがセットになって、CLASSを適当に設定してやると、通常のINPUT BUTTONを画像ボタンみたいに色づけしたりも出来る。
 基本的に、ちょっと大きめで、スマホページとかでタッチ操作に向いている感じだけど、追加のスタイルでサイズを調整すれば良い感じでWebサイトが作れる。
 難しいスタイルを作らずに、簡単にそこそこ見栄えのするページを作りたい時にオススメのアイテムだ。

(317)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

以前の記事で書いた、さくらVPSでKNOPPIXを動かす記事のおまけ

 以前、KNOPPIXをさくらのVPS(virtio_blk)上で動作するようにする記事を書いたけど、今回、仕事関係で複数のVPSサーバーをまとめて設定する必要が生じた為、KNOPPIX利用のイメージングをて行った。
 せっかくminirt.gzを作成したので、基本設定状態で差し替えればいいminirt.gzイメージを置いておく。
↓
Virtio起動対応KNOPPIX用Bootイメージこのファイルをminirt.gzとして配置してやれば、KNOPPIXがVirtio起動デバイスなお名前VPSやさくらVPSで動作するようになる。

  1. KNOPPIXを入手する(最新CD版を利用した)
  2. DaemonTools or WinRARを入手する
  3. KNOPPIXのISOイメージをDaemonToolsでマウントするかWinRARで開く。
    CDの/KNOPPIXをVPSの/KNOPPIXとしてコピーする。
    CDの/boot/isolinuxの中身をVPSの/boot/KNOPPIXにコピーする。
    ついでに、上に置いてあったknoppix_virtio.gzファイルで/boot/KNOPPIX/minirt.gzを置き換える。
  4. VPSのGRUB設定を追加する。
    VPSの/boot/grub/menu.lstに追記して、KNOPPIXを起動できる様にする(最下行に追記)

    title KNOPPIX
    root (hd0,1)
    kernel (hd0,0)/KNOPPIX/linux ramdisk_size=100000 init=/etc/init ro
    initrd (hd0,0)/KNOPPIX/minirt.gz

     デフォルトインストールのさくらVPSだと、hd0,0が/bootで、hd0,1が/なので、ルート配下の/KNOPPIXにアクセスする場合はhd0,1である。 なお、kernelとinitrdでは/boot/KNOPPIXに配置したファイルを使いたいので、hd0,0である。

  5. システムを再起動して、直ちにVNCコンソールを開く。
    GRUBのスタート画面でカーソルキーか何か押すと選択画面が開く。 この時、先ほど追記したKNOPPIXがあるので、選んでEnter。
    KNOPPIXが起動する。
  6. (157)

カテゴリー: サーバ設定 | タグ: , , , , | コメントをどうぞ

お名前.comのVPSとRTX1000の間にOpenswanを使ってIPSec方式のVPNを設定した

 Windows化したさくらVPSサーバーと固定IPプロバイダでつないだRTX1000の間にアグレッシブモード・メインモードのIPSecを張っていたわけだけど、今回はCentOS 6環境のお名前.com VPS(KVM)サーバーとの間にメインモードのIPSec VPNの設定を行った。

 IPSecはオープンな規格であるものの、独自実装が多くて、なかなか相互互換が得られない困ったちゃん。
 特にLinuxのIPSec実装には色々なソフトがあって、つながる組み合わせ、つながらない組み合わせが難しい。
 今回使ったLinuxのIPSec実装であるOpenswanは、CentOS標準パッケージなのでメジャー系ではあるものの、あまり普及しているとはいえず、ネット上で情報収集してもL2TPと組み合わせてスマホを接続するような情報ばかりで、最終的にソースコードを眺めつつ、設定を詰めるのに1週間以上かかってしまったが、何とか構築することが出来たのでメモしておく。

RTX1000の設定

ip route VPSのグローバルIPアドレス gateway tunnel 1 filter 1001 1002 1999

ip filter 1001 reject * * udp * 500
ip filter 1002 reject * * esp
ip filter 1999 pass * *

tunnel select 1
tunnel name VPN2VPS
ipsec tunnel 1
ipsec sa policy 1 1 esp 3des-cbc sha-hmac
ipsec ike always-on 1 on
ipsec ike encryption 1 3des-cbc
ipsec ike esp-encapsulation 1 off
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike local address 1 192.168.0.1
ipsec ike local id 1 192.168.0.1
ipsec ike payload type 1 3
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text 秘密だよ
ipsec ike remote address 1 固定IPだよ
ipsec auto refresh 1 on
ip tunnel tcp mss limit auto
tunnel enable 1

3des-sha1の組み合わせで、ESP有効、MODP1024設定でPFS有効のポリシー(軽いdes-md5を試みたが、yumパッケージ版ではdesはサポートされておらずビルドし直さなければならない)

Openswanの導入は、CentOS標準のyumからの導入でOK(yum install openswan)

Openswanの設定
/etc/ipsec.conf

 auto=startだと起動時に接続にいく。 addにすると、コマンドラインから ipsec auto –up homenetwork のようにコマンドを打つことでリンクアップできる。
 今回は認証がsecret(事前共有鍵)なので、/etc/ipsec.secretsに
: PSK “事前共有鍵”
 のように記述しておく。
 電子証明書認証も出来る。

 VPN接続がうまくいくと、LAN側のPCで”traceroute VPSサーバーの固定IP”とか実行すると、デフォルトゲートウェイ>VPSサーバーのIPの順で表示される(VPNが無いと、デフォルトゲートウェイ>対向ルータ>インターネット>VPSサーバーのIPというように、中間のアドレスが表示される=トンネルモードVPNだと仮想的に1ホップになる)
VPSサーバー側でnetstatを実行すると、VPNで繋がっていないとルータの外側IPが表示されるが、繋がっているとLAN内部のIPがそのまま表示されることでも確認できる。

 VPNを設定しておくと、VPSサーバーからsambaを経由してLAN上のWindowsマシンの共有ストレージを利用したり、LAN上のマシンからPOP3接続したりしたときに、VPSサーバー<=>ルーター間の情報はすべて暗号化されるためセキュアで良い。

参考
参考
RTXのIPSec設定参考
新しいRTXだとこんな事も出来る

(977)

カテゴリー: サーバ設定 | タグ: , , , , , | 1件のコメント

jQueryで開発、テキストフィールドから数字以外を削除する

 数値だけしか入力できないINPUT type=textタグを用意したいことがある。
 簡単に実装する場合は、該当のINPUTタグからフォーカスが外れる時に数字以外を削除してしまうのが良いだろう。

 そんなわけで、そのようにしたjQueryコード

<script src=’https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js’></script>
<script>
    $(document).ready(function(){
        $(".numberonly").blur(function(){
            var str = $(this).val();
            $(this).val(str.replace(/[^0-9]/g, ""));
        });
    });
</script>

 blurイベントはfocusが外れた時。
 で、正規表現で[0-9]以外を消している。
 class=numberonlyにバインドしているので、

<input type=’text’ name=’zip1′ class=’numberonly’>-<input type=’text’ name=’zip2′ class=’numberonly’>

みたいに、郵便番号欄を半角数字に限定するみたいな動きをさせたり?

(2691)

カテゴリー: jQuery | コメントをどうぞ

PHPのUserAgent設定

 PHPでfile_get_contentsなんかを使うとURLからもGETすることが出来る。
 $html = file_get_contents(“http://hogehoge.tld/”);
 みたいな感じ。

 で、この時、UAはPHPが入るんだけど、最近、Google検索をPHPで叩きに行くと403Forbiddenになってしまう。 ここのUA文字列を書き換えると表示できるので、PHPに任意のUAをセットしたい。

 方法は簡単で、iniに設定する。
/etc/php.iniファイルを修正する場合は[PHP]セクションで
 user_agent = “Mosaic”
みたいに設定する。

実行時に切り替える場合は、ini_set関数で
 ini_set(‘user_agent’, ‘User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6)’);
みたいな感じにする。

 独自BOTを作っていて、BOTのUAを定義したい場合など役に立つだろう。

(796)

カテゴリー: PHP | コメントをどうぞ