2009-01-01から1年間の記事一覧
正規表現でIPアドレス判定ーC言語ーその3 - Shammerismで予想した、regcomp の最後の引数を REG_NOSUB だけにする実装を試してみた。 #include <regex.h> #include <stdio.h> int main(int argc, char* args[]){ if( argc == 2 ){ regex_t preg; int regcompresult; regcompre</stdio.h></regex.h>…
正規表現でIPアドレス判定ーC言語ーその2 - Shammerismの実装がうまく動かないので 正規表現に問題ないかを確認。正規表現初心者の自分には、頭で考えるよりも打ち込んで期待通りの 結果を返すか確認する方が早い。というわけで、以下のコードを試す。1から…
正規表現でIPアドレス判定ーC言語ーその1 - Shammerismの続き。正規表現を使用するには、 パターンのコンパイル(regcomp) コンパイルされたパターンを使用しての比較(regexec) という順番で行われるようだ。 そして、regexec の引数、pmatch や nmatch は、…
HTTPクライアントを書いてみようと思っていたが、引数で渡された文字がIPなのかホスト名なのかを判定できるようにしたいと思った。そして、それぞれの場合で動作を変えたい。これを可能にするには、引数がIPアドレスかどうかを判定できる必要がある。まず、I…
現在使われているHTTPのバージョンは、1.0と1.1。1.0も使われているっていっても、大半は1.1だろう。それぞれのバージョンで、リクエストやレスポンスのヘッダーや、実装すべき機能の差分がある。当然だけれども、後に決められた1.1の方が複雑で、HTTP 1.0 …
Java でもCと同様の方法でできるようだ。Socket作成後、connect する前に bind しておけばいい。Socket Class に使用可能なメソッドも定義されているし、やり方はCよりイメージしやすい気がする。単にJavaの方に慣れているだけか? import java.io.*; import…
Socketアプリケーションを作成した場合、 サーバーは特定のポートにbindし、そのポートでlistenする クライアントはエフェメラルポートを使用する(ポートは意識しない) というのが通常。 しかし、何らかのテストなども目的でクライアントのポートを固定し…
getnameinfo-sample_beta - Shammerismの実装では、サービスが 0 になってしまうと思っていたが、単純なミスだった。getaddrinfo の第二引数を NULL にしていたことが原因。この点を修正してうまくいった。最終バージョンは以下。 #include <arpa/inet.h> #include <err.h> #incl</err.h></arpa/inet.h>…
自分の実装が期待通りに動作していないので原因を調べていたところ、以下のサイトを見つけた。 http://www.koutou-software.co.jp/junk/howto-independ-addfamilysock.html結構長いページだが、下の方にgetnameinfoのサンプル使用例とかがある。まだ詳細を見…
結局、自分の中で「速読」に対する熱は冷めていった。読書は、旅のようなものだと思う。 一つのところをさっと見て、できるだけ多くの場所に行きたいという人もいるだろうし、 多くの場所に行かなくてもいいから、行った旅行先をじっくり楽しみたい人もいる…
最近、本を読む量が減った。多いときは年間100冊いくかいかないか、という程度だったが、 最近は一年に30冊読んでいるかいないか、というところだ。まあそれはさておき・・・ 本をたくさん読んでいた頃は、「速読」というものにものすごく興味があった。 そ…
getnameinfo-sample_alpha - Shammerismの内容から、getnameinfo を使用する際にはIPアドレスをベースに動作させたい、と思い考えてみた。getnameinfo に必要な入力は sockaddr 構造体。IPアドレスから sockaddr 構造体を手に入れるには・・・ということで、…
Cの場合はほぼ確実に、Javaでも以下のようなコードを見かけることがある。 void foo(int x, int y) { int a = x; int b = y; ... }コードだけの話だと、この関数内ではそのまま x や y といった変数名で目的の値を参照できるのに、あえてローカル変数に入れ…
とりあえず、man コマンドにあるヘルプを参考に書いてみた。 #include <arpa/inet.h> #include <err.h> #include <netdb.h> #include <stdio.h> #include <string.h> int main(int argc, char* args[]){ if( argc == 2 ){ // man getnameinfo sample // struct sockaddr *sa; /* input */ // char hbuf[NI_MAX</string.h></stdio.h></netdb.h></err.h></arpa/inet.h>…
例によって、man getnameinfo からの引用。man コマンドはすごいな。まず、宣言部。 int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags);次にDescription。 DESCRIPTI…
以下の内容を総まとめに整理。といっても、コマンドを羅列するだけ・・・ついでに、中間証明書も作ってみた。 独自のCA環境を構築する - 環境作成編 - Shammerism 独自のCA環境を構築する - OpenSSL設定ファイル編 - Shammerism 独自のCA環境を構築する - 自…
なんかSSL/TLSに脆弱性が見つかったらしい。この記事でそれを知った。 http://journal.mycom.co.jp/news/2009/11/09/006/?rt=m&t=o&n=2906 このサイトから、原文の情報を見てみたが、どうもSSLのRenegotiating時に 特殊なことをするとこの脆弱性を突けるらし…
米国の方では承認されたし、来年の初頭には決まるって見込みを信じていたけれど、 http://headlines.yahoo.co.jp/hl?a=20091105-00000011-inet-inet の情報によればどうやらもめているらしい。 う〜ん、なぜ?Oracle側はMySQLに投資を続けていくと言っている…
背景 CA.sh を使用して、CSR や秘密鍵、証明書の出力先を指定するには CA.sh への追記が必要。追記するためには、各コマンドのオプションとかを調べる必要がある。でも、ここまでやるなら最初から自分でコマンド打ち込んでもいいのでは?ということで、opens…
準備とGoal まず、OpenSSL 用の特定ディレクトリを設定($OpenSSL_DIR)。 その配下に RootCA($MyRootCA)と、サーバー証明書を生成する各サーバー用のディレクトリ($ServerCertificates)も作成しておく。 コマンドにするとこんな感じか。 mkdir $OpenSSL…
OpenSSLを使用して、独自のCAを作り、そのCAに署名されたサーバー証明書を作成する手順をまとめてみた。まず、以下のスクリプトでCAの環境を構築する。 @REM @REM Change Directory to OpenSSL Home @REM cd /D C:\OpenSSL @REM @REM Define MyCAName. This …
先に作成していたCSRに対して、CAを使用して証明書を発行してみる。 なお、先に作成していたopenssl.confやCSRを利用するものと想定。コマンドは以下のようになる。 openssl ca -conf openssl.conf -in server1_csr.pem 設定ファイルがおかしいと何らかのエ…
サーバーの証明書を作るまでの流れは大まかに以下の通り。 サーバーの秘密鍵を作る サーバーの証明書要求(CSR)を作る 証明書要求をCAに送付し、署名された証明書を得る 「独自のCA環境を構築する - 自己署名証明書作成編」の手順で、自分専用CAの証明書を…
JSR 133に、Javaのメモリモデルについての情報がある。 そして、この情報は和訳されている様子。 http://www.javareading.com/bof/cookbook-J20060917.html reorderとか、volatileの話など、かなりマニアックな情報だ。 さらに、FAQの話もある。先のダブルチ…
Mac OS X Leopard へGlassfish 2.1 をインストールしてみた。 方法は単純で、 https://glassfish.dev.java.net/public/downloadsindex.html からダウンロードすればよい。 ダウンロードして、インストールはjarを解凍するだけ。カレントディレクトリに glass…
「OpenSSL設定ファイル編」では、ディレクトリ構成や証明書のpolicyについて定義を行ったが、 実際に証明書を作成するにはもう少し定義が必要。先のopenssl.confにもう少し情報を追加する。 [ca] default_ca = MyOwnRootCA [MyOwnRootCA] dir = /MyOwnRootCA…
特定のコマンドを使用するときに、毎回必ず付けるオプションがある場合などに定義しておくと便利。 たとえば、 alias ls='ls -l' というようにしておけば、lsとやるだけで自動で -l オプションが付与された状態になるし、 alias rm='rm -r' とやれば、rmコマ…
「独自のCA環境を構築する - 環境作成編」の手順で、OpenSSLを実行するためのディレクトリ構造はできあがった。 実際に、OpenSSLでX509証明書を作る際には、コマンド実行時に設定ファイルを定義し、そのファイルの設定に基づいて証明書が作られる。 [ca] def…
Mac OS X で、独自のCA環境を構築してみることにした。 Mac OS X には、デフォルトでOpenSSLがインストールされているのでそれを使う。 まず、CA用のファイルを置くディレクトリを決める。 今回は、~/MyOwnRootCAとしておく。Terminalを起動して、以下のコマ…
こんな情報を発見。 Oracle by Example Series: Oracle WebLogic Server 10.3 http://www.oracle.com/technology/global/jp/obe/fusion_middleware/wls103/index.html 今まで気付かなかったが、こんな情報があるとは。 ここは要チェック。気になる内容が出て…