2009年7月31日

新江ノ島水族館

今週末は鎌倉の海岸で海水浴予定だったが、あいにくの天気に見舞われ、新江ノ島水族館に行き先を変更。
朝一の館内は、そんなに人も混んでおらずそこそこ展示物を楽しめたが、イルカショーの後のころには、ペンギンもカメタッチも人混み過ぎてあまり楽しめず。
イルカショーは、へんちくりんな格好した人間のパフォーマンスが目に付き、肝心のイルカの芸が迫力がない。でも、それはあくまで大人目線で、ムスメは一人で拍手しながら大興奮。
正直、イルカショーに限っていえば、近場の品川アクアスタジアムの方が数倍は楽しい。明らかに客の歓声の数も大きさも違った。
でも展示物はこちらの方が多いし、ムスメがもう少し大きくなってゆっくり回れるようになったら、もう一度来てみようか。


2009年7月14日

apacheのサイト証明書を設定 - 調査

確認環境


  • Debian(etch)

  • apache2-mpm-prefork 2.2.3-4+etch6

手順

①証明書要求の作成

~# cd
~# mkdir www33.atwiki.jp
~# cd www33.atwiki.jp
~/www33.atwiki.jp#
~/www33.atwiki.jp# openssl req -new -keyout site_key.pem -out site_csr.pem
...
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
...
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:KANTO
Locality Name (eg, city) []:KANAGAWA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NONE
Organizational Unit Name (eg, section) []:NONE
Common Name (eg, YOUR name) []:www33.atwiki.jp
Email Address []:NONE
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:tekitou
An optional company name []:
~/www33.atwiki.jp#

②証明書要求の送付

サイト証明書を発行してもらうため、証明書要求をベリサイン等の認証機関に送付する。もしくは、独自認証局で自分でサイト証明書を作成する。

(1)サイト証明書の配置と設定

scp等でサイト証明書を/root/www33.atwiki.jp/site_cert.pemに配置

~# ls www33.atwiki.jp/site_cert.pem
www33.atwiki.jp/site_cert.pem

(2)サイトキーからパスワードを削除

~# openssl rsa -in ./www33.atwiki.jp/site_key.pem -out ./www33.atwiki
.jp/site_key.pem.nopasswd

(3)apacheの定義ファイルで以下を設定(SSLサイト作成の詳細は割愛)

SSLCertificateFile "/root/www33.atwiki.jp/site_cert.pem"
SSLCertificateKeyFile "/root/www33.atwiki.jp/site_key.pem.nopasswd"

(4)apacheを再起動する

~# /etc/init.d/apache2 restart

2009年7月6日

[C言語] RPCサンプルプログラム - 調査

参考資料(http://www.cs.tsukuba.ac.jp/~yas/sie/cdsoft-2005/2006-01-20/index.html)を元にRPCサンプルプログラムを動作させてみた際のメモ。


ソースコードほかの入手
$ wget http://www.cs.tsukuba.ac.jp/~yas/sie/cdsoft-2005/2006-01-20/ex/dirlist.x $ wget http://www.cs.tsukuba.ac.jp/~yas/sie/cdsoft-2005/2006-01-20/ex/dirlist_server.c $ wget http://www.cs.tsukuba.ac.jp/~yas/sie/cdsoft-2005/2006-01-20/ex/dirlist_client.c $ wget http://www.cs.tsukuba.ac.jp/~yas/sie/cdsoft-2005/2006-01-20/ex/Makefile
コンパイル
$ make rpcgen -C dirlist.x gcc -g -DDEBUG -c -o dirlist_clnt.o dirlist_clnt.c gcc -g -DDEBUG -c -o dirlist_client.o dirlist_client.c gcc -g -DDEBUG -c -o dirlist_xdr.o dirlist_xdr.c gcc -g -DDEBUG -o dirlist_client dirlist_clnt.o dirlist_client.o dirlist_xdr.o -lnsl gcc -g -DDEBUG -c -o dirlist_svc.o dirlist_svc.c gcc -g -DDEBUG -c -o dirlist_server.o dirlist_server.c gcc -g -DDEBUG -o dirlist_server dirlist_svc.o dirlist_server.o dirlist_xdr.o -lnsl
実験その1 単純動作 ※サーバとクライアントで端末を分けること
<サーバ側>
$ ./dirlist_server
<クライアント側>
$ /usr/sbin/rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status 536875011 1 udp 50085 536875011 1 tcp 32775 $ ./dirlist_client localhost /usr errno: 0 (Success) . .. share (後略)
ふーん。
実験その2 サーバを強制停止してみる
<サーバ側>
$ ./dirlist_server ^C (※強制停止) $
<クライアント側> $ /usr/sbin/rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status 536875011 1 udp 50085 536875011 1 tcp 32775 $ ./dirlist_client localhost /usr localhost: RPC: Remote system error - Connection refused
サーバが死んだが、portmapの情報は生きているのね
実験その3 サーバを再起動してみる
<サーバ側>
$ ./dirlist_server
<クライアント側> $ /usr/sbin/rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status 536875011 1 udp 42517 536875011 1 tcp 32791 $ ./dirlist_client localhost /usr errno: 0 (Success) . .. share (後略)
あぁ。ポート番号が再登録されているね、、消せないのかな?
実験その4 portmapのポート番号を消してみる
<クライアント側>
$ su - Password: ********** # rpcinfo -d 536875011 1 # rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status # exit $ ./dirlist_client localhost /usr localhost: RPC: Program not registered $
なるほどね。再登録は?
実験その5 portmapのポート番号を再登録してみる
<クライアント側>
$ su - Password: # rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status # cat test 536875011 1 udp 42517 536875011 1 tcp 32791 # cat test | pmap_set # rpcinfo -p localhost プログラム バージョン プロトコル ポート 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1010 status 100024 1 tcp 1013 status 536875011 1 udp 42517 536875011 1 tcp 32791 # exit
出来た。でもこれはサーバが動作継続していたことが前提だ。サーバプログラム自身で削除、再登録等の状況にマッチした登録って出来ないのか?→多分rpcgebが作るサーバスケルトンを改造しないとできなさそうだ。また今度。

2009年7月5日

pmap_getport(2)

ポートマッパ(portmap)からRPCサービスのポート番号を取得するpmap_getport関数の使い方。

用例
...
addr.sin_port = htons(111); /* (1) portmapのポート番号を設定 */
if ((addr.sin_port = htons(pmap_getport(&addr, 0x20000000, 1, IPPROTO_TCP))) == 0) { /* (2) 使用したいRPCサービスのポート番号で置き換え */
perror("pmap_getport");
exit(1);
}

/* (3) ポート番号が置き換わったところで、コネクトする */
if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0){
perror("connect");
exit(1);
}
備考
上記は、独自プロトコルのポート取得にportmapを使う例になっている。本来、connectなんて書かずに、キチンとRPCの関数を使ってRPCプロトコルで通信すべきなんだろうが。

pmap_set(2)

ポートマップ(portmap)にRPCサービスを登録するpmap_set関数。

用例
pmap_unset(0x20000000, 1);
if (pmap_set(0x20000000, 1, IPPROTO_TCP, ntohs(saddr.sin_port)) != 1) {
perror("pmap_set");
exit(1);
}

getsockname(2)

soctnameを取得する関数。

用例
len = sizeof(saddr);
if (getsockname(fd1, (struct sockaddr *)&saddr, &len) != 0){
 perror("getsockname");
 exit(1);
}
printf("port number is %d.\n", ntohs(saddr.sin_port));
メモ
manページを眺めても使い方が良く分かんらんかった。試行錯誤の上、上記に到達。

ラベル

Android Android-x86 apache Backup Blog CentOS DDNS Debian DIY DTM Eclipse Excel Fedora Firefox Google Chrome Hyper-V java Kreetingkard KVM Linux Linux Mint Linuxコマンド例 Linuxシステム管理 Linux管理 Minecraft Minecraft: Wii U Edition Nintendo 3DS nmap O'REILLY Office KB openssl OpenStack openSUSE openSUSE 12 Parted Magic patch(1) PC DIY PC自作 pgrep(1) PHP Picasa pmap(1) PMMP Postfix postgresql printer ps(1) pukiwiki QEMU RHEL rhel5 rhel6 samba sar(1) savscan(1) savupdate(1) Scientific Linux 6 security SELinux SEO showrgb(1) Slackware Linux smbclient(1) smbstatus(1) snmpd(8) squid startx(1) stat(1) strace(1) syslogd(8) tac(1) tee(1) testdisk Thunderbird timezone tomcat touch(1) tr(1) trouble shooting tuning ubuntu uname(1) USB tethering USBブート USBメモリ vi(1) vim(1) virtualbox VMWare VMWare Player vmware server VMware Tools VNC Web Services Wii U Windows wordpress x window XAMPP イベント・祭り インターネット おもちゃ屋 カツカレー ギフト クリーニング店 ゲーム ゴミ コンビニ サンプルコード スプラトゥーン2 スポーツ スポット スマホ ソースコード その他 ダーツ ツールTIPS つぶやき ディスク設定 デジタルDIY デジタルガジェット デスクトップ設定 ドラッグストア トラブル トラブルシューティング ニュース ネットワーク設定 バス観光 バックアップ・リストア ビリヤード ブログパーツ プログラミング ブログ作成 ペット用品店 ホームセンター マンションギャラリー メダリーフ リモートアクセス設定 リラクゼーション レジストリ 為替 映画館 英語勉強メモ 横浜市 横浜市交通局 横浜矢向周辺 横濱たちばな亭 屋台 屋内プレイランド 屋内遊園地 温泉 花火 画像 海水浴場 外食 街猫 学校 楽天ウェブサービス 鎌倉 交通 公園 公共施設 国内x86サーバ 災害 雑貨店 参考文献 散髪 使い方 子供教室 死因 寺社 車関連 習い事 住居メンテナンス 出前 情報 食料品店 尻手駅前 新横浜 新横浜駅 新規出店情報 新築 新鶴見公園 新鶴見人道橋 神社 辛スナック 水族館 川崎 川崎駅 川崎駅周辺 川崎市南部市場 川崎大師 卓球 段葛 中古屋 中山ビル 釣り施設 鶴岡八幡宮 鶴見 鶴見神社 電気店 電車 統計 動物園 南武線 日枝神社 買い物 買物 博物館等 八景島シーパラダイス 美容・サロン 百貨店 病院 風呂 複合商業施設 保育園 本屋 漫画 漫画喫茶 矢向 遊園地