エラー「SSL received a record that exceeded the maximum permissible length」が出る

SSL received a record that exceeded the maximum permissible length

このエラーは、VirtualHostでSSL参照させる設定のIPが間違えているときに出る

openssl 0.9.8oで、携帯からSSL接続が出来ない?

先日、携帯の一部機種からSSL接続が出来ないという障害があり

未だ解決していないのだが、

Ubuntu11.04(デフォルトで0.9.8oが入る)に古いリポジトリ読ませて0.9.8kを入れた所、それでもSSL接続出来なかった。関連するライブラリまでダウングレード出来てたかどうかは不明ですが。

どうやらopensslのバージョンで挙動が変わるみたいだ。

手元にある検証環境で実験したところ

0.9.8kは接続可能だった

0.9.8oでは接続が出来なかった。

もちろん、PCから接続した場合は両方とも接続可能なことは確認してある。

この、kとoの違いで、携帯から接続できるか出来ないかが決まるのはなかなかシビアだと思うのだが、実際そのような症状が出ている。

http://www.nttdocomo.co.jp/service/developer/make/content/ssl/notice/index.html#p04

こののドコモのサイトでは、「0バイトコードデータの暗号化について」
ということで、0バイトコードデータを暗号化する際のロジックがバージョン毎に若干変わっているらしく、sslのバージョンによる接続障害についての説明がある。

だが、今回は0.9.8なので、当てはまらない。

であるが、このサイトの表を見る限り、0.9.6dのみが接続出来ない症状が出てて、cやeだと問題ないという感じなので、今回もこのようなピンポイントなバージョンの障害である可能性が高い。

 

とりあえず、opensslのバージョンを0.9.8kまで落とせば接続可能であると思われる。

Ubuntu 10.04にしてテスト環境を構築したところ、やはり接続が可能なので、何らかのプロダクトのバージョンに不具合がある物と思われる。

ワーニング「warning: peer certificate won’t be verified in this SSL session」が出る

このワーニング
「warning: peer certificate won’t be verified in this SSL session」
は、Net::HTTPライブラリを使用してSSLなページを取得したときに出力される

これを止めるには

Net::HTTPを使用するときに「verify_mode」を設定する

とする

「verify_mode」を設定するときは、「use_ssl」は必須

cronの設定

設定方法

cron編集用コマンドを実行

以下のような書式で実行するタスクを登録

フィールド 指定可能な値
各行の最初の数値5つは左から順に以下の意味があります。

0-59
0-23
月内日 1-31
1-12 (もしくは名前)
曜日 0-7 (0 と 7 は日曜日)

リストと範囲
各フィールドには、リスト形式で複数指定したり、範囲を指定したり出来ます。

リスト 分のエリアに「0,15,30,45」と設定すれば、15分おきに実行します。
範囲 曜日のエリアに「1-5」と設定すれば、月曜日~金曜日に実行します。
共存 時のエリアに「9-17,20」と設定すれば、9時から17時と20時に実行します。
間隔値 時のエリアに「1-5/2」と設定すれば、1時、3時、5時に実行します。

サンプル

  • 1時間ごとに実行
  • 毎日5時に実行
  • 毎週日曜日の1時に実行
  • 毎月1日の1時に実行
  • 12月31日の19:00に実行

Ubuntuに入れたMySQLに外部から接続する

UbuntuはパッケージでMySQLを入れるとすぐに起動しますが

外部からの接続が出来ないように設定されています。

/etc/mysql/my.cnf

このファイルの中に

という行があります。

これは、IPが127.0.0.1からの接続しか受け付けないですよ、という設定で

127.0.0.1は自分自身のことなので、そのマシンの中からしかつなぐことが出来ません。

この設定行をコメントアウトすることで、その制限を外すことが出来ます。

UbuntuにRed5を入れてストリーミング配信をする

最近は、ストリーミング配信をするにしても、フリーでサーバを立てられるので、すばらしい。

Red5とは、RTMP(Real-Time Messaging Protocol)に準拠しているため Flash Media Server互換と位置づけられています。

Red5を使うことで、動画のストリーム配信や、インタラクティブな機能を有したアプリケーションを開発することができます。

red5日本ユーザ会のページからの引用ですが

  • 音声ファイル(MP3, AAC, M4A)や動画ファイル(FLV,F4V,MP4)のストリーミング配信
  • Webカメラなどからのストリーミング映像を録画する
  • 複数のクライアント間で共有できるオブジェクト(SharedObject)をサポート
  • 映像や音声などのライブ映像をリアルタイムに配信する
  • クライアントサイドからサーバーサイドのメソッド呼び出し
  • サーバサイドからクライアントサイドのメソッド呼び出しも可能であり、これによりプッシュ型のアプリケーションも実現可能

という機能があるようです。

このred5で動画のストリーミング配信のサーバを立てて、クライアント(ブラウザ)側ではFlashのプレイヤーで再生する、というのが今回の目標です。

使う物としては

サーバにUbuntu

当然red5

クライアント用プレイヤーとしてFlowPlayer

という組み合わせでやってみたいと思います。

red5はjavaで作られているので、まずはjavaをインストールします。

Ubuntuのパッケージだと、openjdkがあるので、これを入れます。

これでjavaが入りました。

次に、red5をダウンロードします。

以下のサイトからとりあえず最新版をダウンロード

http://www.red5.org/news/

解凍

red5を起動します

http://localhost:5080/
とブラウザでアクセスして、red5のページが表示されたら、問題なく起動できました。

続いてデモ用のプラグインを入れます。

Install a ready-made application

というリンクをクリックします。

表示されたリストの中で、「oflaDemo」というのをクリックして、installボタンを押します。

完了したら、http://localhost:5080/ へ戻って、Launch a demoというリンクをクリックします。

OFLA Demoの view Demoをクリックして、デモページを開きます。

上のconnectボタンの上の入力欄に、rtmp://localhost/oflaDemo と入力してconnectボタンを押す

すると、Libraryにいくつかファイルが並ぶので、それをクリックすると、video に映像が表示される。

そうすれば、ストリーミングの疎通は完了。

今回は、手っ取り早くストリーミングを実現したいので、このolfaDemoのサンプルを活用して実現します。

次に、クライアントとなるFlowPlayerの設置です。

まず、

http://flowplayer.org/

からFlowPlayerの最新版をダウンロードします。

ダウンロードするのはフリー版

解凍

解凍して出来たファイルをred5のディレクトリにコピーします。

htmlファイルを作成します。

作成したhtmlファイルをブラウザから見てみます。

http://localhost:5080/demos/ofla_demo.html

これで、映像が表示されれば、ストリーミング配信環境はほとんど構築完了です。

ストリーミングさせるファイルは

red5-1.0.0/webapps/oflaDemo/streams

ディレクトリにおいてあるので、ここにflvファイルを置くことで追加出来ます。