STLport-5.2.1をビルドしてみた(VS2008)

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

Browse STLport Files on SourceForge.net

STLport-5.2.1.tar.bz2をダウンロードして、展開後、
INSTALLの指示に従って、

D:\work\STLport-5.2.1>configure msvc9
D:\work\STLport-5.2.1>cd build\lib
D:\work\STLport-5.2.1\build\lib>nmake clean install

・・・
        cl /nologo /W4 /EHsc /Zm800  /MTd /Zi  /DWINVER=0x0501 /GS /DWIN32 /D_WI
NDOWS /D_DEBUG /D_STLP_DEBUG  /I../../stlport  /c /Foobj\vc9\static-stlg\cxa.o /
Fdobj\vc9\static-stlg\stlportstld_static.pdb ../../src\cxa.c
cxa.c
        lib /nologo  /out:obj\vc9\static-stlg\stlportstld_static.lib obj\vc9\sta
tic-stlg\dll_main.o obj\vc9\static-stlg\fstream.o obj\vc9\static-stlg\strstream.
o obj\vc9\static-stlg\sstream.o obj\vc9\static-stlg\ios.o obj\vc9\static-stlg\st
dio_streambuf.o obj\vc9\static-stlg\istream.o obj\vc9\static-stlg\ostream.o obj\
vc9\static-stlg\iostream.o obj\vc9\static-stlg\codecvt.o obj\vc9\static-stlg\col
late.o obj\vc9\static-stlg\ctype.o obj\vc9\static-stlg\monetary.o obj\vc9\static
-stlg\num_get.o obj\vc9\static-stlg\num_put.o obj\vc9\static-stlg\num_get_float.
o obj\vc9\static-stlg\num_put_float.o obj\vc9\static-stlg\numpunct.o obj\vc9\sta
tic-stlg\time_facets.o obj\vc9\static-stlg\messages.o obj\vc9\static-stlg\locale
.o obj\vc9\static-stlg\locale_impl.o obj\vc9\static-stlg\locale_catalog.o obj\vc
9\static-stlg\facets_byname.o obj\vc9\static-stlg\complex.o obj\vc9\static-stlg\
complex_io.o obj\vc9\static-stlg\complex_trig.o obj\vc9\static-stlg\string.o obj
\vc9\static-stlg\bitset.o obj\vc9\static-stlg\allocators.o obj\vc9\static-stlg\c
_locale.o obj\vc9\static-stlg\cxa.o
        copy obj\vc9\static-stlg\stlportstld_static.lib ..\..\lib\
        1 個のファイルをコピーしました。
        1 個のファイルをコピーしました。

ビルドできた物。

D:\work\STLport-5.2.1\build\lib>cd ..\..\lib
D:\work\STLport-5.2.1\lib>dir

D:\work\STLport-5.2.1\lib のディレクトリ

2009/10/10  00:34    <DIR>          .
2009/10/10  00:34    <DIR>          ..
2009/10/10  00:32           761,723 stlport.5.2.exp
2009/10/10  00:32         1,249,494 stlport.5.2.lib
2009/10/10  00:33           761,728 stlportd.5.2.exp
2009/10/10  00:33         1,251,828 stlportd.5.2.lib
2009/10/10  00:34        12,509,626 stlportd_static.lib
2009/10/10  00:34           634,880 stlportd_static.pdb
2009/10/10  00:33           993,050 stlportstld.5.2.exp
2009/10/10  00:33         1,645,444 stlportstld.5.2.lib
2009/10/10  00:34        16,201,620 stlportstld_static.lib
2009/10/10  00:34           831,488 stlportstld_static.pdb
2009/10/10  00:34        11,877,296 stlport_static.lib
2009/10/10  00:34           634,880 stlport_static.pdb
              12 個のファイル          49,353,057 バイト
               2 個のディレクトリ  105,184,706,560 バイトの空き領域

で、テスト。

D:\work\STLport-5.2.1\build\lib>cd ..\test\unit
D:\work\STLport-5.2.1\build\test\unit>nmake install
../../../test/unit\ctype_facets_test.cpp(430) : error C2001: 定数が 2 行目に続い
ています。
../../../test/unit\ctype_facets_test.cpp(430) : fatal error C1057: マクロ展開中
に予期せぬ EOF を検出しました。
NMAKE : fatal error U1077: ‘"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"’ : リターン コード ‘0x2’
Stop.

バイナリエディタで見てみると、0xE7が原因で文字化けてた。
http://ja.wikipedia.org/wiki/%C3%87 っぽい。&Ccedil;
    CPPUNIT_ASSERT( ct.is(ctype_base::mask(ctype_base::print | ctype_base::lower | ctype_base::alpha), ‘・) );
    ↓
    CPPUNIT_ASSERT( ct.is(ctype_base::mask(ctype_base::print | ctype_base::lower | ctype_base::alpha), 0xE7) );
に修正して再チャレンジ。
D:\work\STLport-5.2.1\build\test\unit>nmake install
D:\work\STLport-5.2.1\build\test\unit>cd ..\..\..\bin
D:\work\STLport-5.2.1\bin>stl_unit_test
・・・
AdvanceTest::adv
AdjTest::adjfind0
AdjTest::adjfind1
AdjTest::adjfind2
AdjTest::adjdiff0
AdjTest::adjdiff1
AdjTest::adjdiff2
AccumTest::accum1
AccumTest::accum2

There were errors! 3 of 435 tests, 3 ignored (2 explicit)

ま、いいか。

試しに使ってみる。

D:\work\STLport-5.2.1\bin>cd ..
D:\work\STLport-5.2.1>type hello.cc

#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "hello, world" << endl;
 
    return 0;
}

 

D:\work\STLport-5.2.1>cl hello.cc /Istlport lib\stlport_static.lib

D:\work\STLport-5.2.1>dir hello.exe

2009/10/16  21:26           220,160 hello.exe

               1 個のファイル             220,160 バイト

D:\work\STLport-5.2.1>cl hello.cc

D:\work\STLport-5.2.1>dir hello.exe

2009/10/16  21:27            97,792 hello.exe

               1 個のファイル              97,792 バイト

ん~、でかい。

カテゴリー: ソフトウェア | タグ: , , , , | 2件のコメント

ドリップタイプなインスタントコーヒー

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

をここ最近よく飲んでいるんですが、毎週買いに行くのが面倒になったので、通販での購入を検討してみました。条件は、

  • 送料込みで、1杯単価50円以下
  • 評判が悪くない
  • クレジットカード対応
    財布に現金がほとんど入ってないので代引きは難しい。銀行振込みは面倒。

だけ。とまぁ、ほとんどこだわりは無いんですが。自分の好みに合うかどうかは飲んでみないと分からないだろうし。

そんなこんなで、あちこち探してみた結果、TSUJIMOTOcoffee の↓を試しに購入してみることにした。

 
工場直送の新鮮ドリップコーヒー 5種類お試したっぷり50杯セット

を¥2,280で購入。今だとブルーマウンテンブレンドが2つ付く(2009/10/11現在)そうなので、計52杯。
なので、1杯で換算すると、2,280 / 52 ≒ 43.85円。単純計算だけど。

ここ最近飲んでいたモンカフェのマイルドブレンドが、10杯で500円くらいだったのでそれより安い。

↓届いた。

tsujimoto_coffee_1tsujimoto_coffee_2

tsujimoto_coffee_3 tsujimoto_coffee_4

同封されていた案内書(?)に、冷蔵庫などの冷暗所で保存するように書いてるけど、ウチの小さい冷蔵庫には入りっこない。

まぁ、ともあれ早速、いつもブレンドを~・・・
みたいにレビューでもすれば良いんだろうけど、レビューできるほどの違いの分かる舌ではない。けど、一応、、、いつもブレンドを飲んでみた感想は、香ばしい香り、程よい苦み、すっきりとした後味の良さ。という商品紹介に嘘は無いなぁと。酸味が少なかったのも個人的にはうれしい。

あ、そういえば、まろやかブレンドのドリップバッグが少し入れ辛かったような気がした。

(追記)

個人的なベストは、ほろにがブレンドでした。苦みがすごく良い感じ。お試しセットを飲み終わったら、↓これを購入予定。値段見たら、送料込みで4,320円(2009/10/11現在)。

 ☆送料無料・さらに10%引き☆スペシャルドリップコーヒーほろにがブレンド100杯分

50杯セットの方は、送料別で、2,400円で高かったので。

カテゴリー: その他 | タグ: , | コメントする

Google Chromeが何故かインストールできない

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

ChromeSetup.exeを実行しても全く反応無し。

という現象を半年前くらいに確認してGoogle Chromeには縁が無いんだなぁ。
と思ってそのままにしてたけど、何の気なしにネットを徘徊してたら、↓を発見。

Firefox 3.0が重い理由とgoogle Chrome:千里の道も一歩から:So-net blog

インストールするときの注意点として、「テンポラリフォルダがルートだとインストールできない」
ノートはRAMディスクをテンポラリにしていたので、見事にはまった。

自分の環境もRAMディスクがテンポラリになってたので、
一時的に変更してからインストールしてみた。

  1. スタート → ファイル名を指定して実行
    で、名前に、cmdを入れてOK
  2. set TMP=J:\chrome_tmp
  3. cd \
  4. ChromeSetup.exe

すると!インストーラが動く!!
今まで何度ダブルクリックしても、何も言わなかったあいつが!!!

インストール後、環境変数をルートに戻して、Google Chromeを動作させた場合も色々と不具合(テーマが適用できないとか)があるので、恒久的に環境変数のTMPを変更することにした。

カテゴリー: ソフトウェア | タグ: , , , | 1件のコメント

異なるサブネットとの接続について

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

正確に言うと、サブネットA ⊆ サブネットBのような場合って接続可能なのだろうか?

subnetA-B

  • サブネットAに属するPC1:192.168.0.1/27 (192.168.0.1 – 192.168.0.31)
  • サブネットBに属するPC2:192.168.0.33/26 (192.168.0.0 – 192.168.0.63)

このPC1とPC2がルータを経由せず、スイッチとかで繋がっている場合に、pingを打ったら??。

PC2からPC1を見た場合、同じサブネットBにいるとしか見えないと思う。相手のサブネット何か知ったこっちゃ無いだろうし。

逆に、PC1からPC2を見た場合は?PC2がサブネットAにいないことは明白だから、Unreachableかな~。

ってことを実験しようと考えつつネットを彷徨ってたら、まさしくやろうとしてた事をやっていたサイトを発見。

第2回 サブネット・マスクの役割を知るために実験してみよう

第3回 サブネット・マスクとは何かをping実験結果から考察

第5回 サブネット・マスクはなぜ必要なのか

まぁ、想定通りでした。

PC1のデフォルトゲートウェイが正しく設定されていた場合は、ちゃんと応答返しますよ。という例も発見。

間違ったサブネット・マスク設定のパソコンがLANにいたら?

サブネット・マスクの設定ミスでLANがパンクした理由を探る

もう一つ気になったのが、ブロードキャスト。でも、どっちもダメなんだろうな。試してないけど。

カテゴリー: その他 | タグ: | コメントする

Logicool TM-250に慣れた

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

Logicool TM-250を購入してから、2ヶ月も経過してるのでそりゃそうだろ。って話ですが。

実際は2週間ほどで普通に操作する分には問題なくなりました。ただ、細かい操作やマウスジェスチャーはスムーズに出来なかった。

で、2ヶ月後の現在は、ある程度の細かい作業とマウスジェスチャーはスムーズに出来るようになりました。絵を描いたりは無理。元々絵心無いからあれですが。

巷では、トラックボールにすると手首が疲れないという話もあるらしいですが、自分の場合は、マウスを使って時も手首をほとんど動かさなかったので、親指と小指だけで動かしてたようなものなので、疲労度は変化なし。

・・・

そんなこんなで、会社用にもう1個買おうか迷い中。

カテゴリー: ハードウェア | タグ: | コメントする

Logicool TM-250を購入

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

何となくトラックボールを使ってみたくなった。ってだけの理由で購入。

200907212326002 200907212326000 200907212326001

まだ1日しか使ってないからだろうけど、サッパリ慣れず。。
しっくりも来ない。これは、今まで使ってたマウスより一回りでかいのが原因だろう。
まぁ、しばらく使ってみよう。

 

ホントは、

が欲しかったけど、9,000円程するので断念。 初トラックボールなので、お試しで買うには高い。。

TM-250は、USBに接続しただけで普通に使えたので、付属のSetPointとかいうToolをインストールする必要は無かったけど、試しにインストールしてみた。でも、ボタンの割り当てを変更するとかは別に要らないので、即アンインストール。

・・・その後しばらくして気付いたのが、キーボードのキーが、
US配列から日本語配列へ変更されてしまっているという。。。
ここ最近でインストールした物は、SetPointしか無いので、
どう考えても、SetPointのせいな訳ですが、アンインストール済みなので、
残骸が残ってしまってる可能性が高い。

仕方がないので、システムの復元でSetPointインストール前に戻したところ、
元のUS配列なキーに戻った。

厄介なToolだなぁ。。

カテゴリー: ハードウェア | タグ: , , | コメントする

英文を読めるようになりたい

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

話す(Speaking)のと聴く(Listening)のは置いといて、とにかく読み(Reading)が出来るようになりたい。

なんで、英文を読めるようになりたいかというと、

辺りをスラスラ読みたい。ってのと、
専門書も原著(洋書)の方が圧倒的に安かったりするんで。
学生の頃、↓これ(版数はもっと古かったけど)を買おうとしたけど、高すぎて買えず。。

 

 

↓こっちの原著(洋書)だと、↑この訳書の半額くらいで買える。っていう始末。

 

とは言っても、何から初めれば良いかサッパリ。。
周囲を見渡してみた限り、英語の勉強に役立ちそうなアイテムとしては、以下がある。

  • 好きな武将の調査に大活躍中の電子辞書(SR-G7000M)
  • 「高校の英文法を基本からおさらいする本 イチからやり直し編」
  • 「高校の英文法を基本からおさらいする本 一歩前進編」
  • 英検4級(中学中級程度らしい)の頭脳

真ん中の2つの本は、、、家にあるって事は、、、買ったんだろうけど、
いつ買ったのかは記憶に無い。

まぁ、とりあえずこの2つの本を読むことから始めてみることにするかなと。。
明日 or 来週 or 来月から。

# 本日の意気込みだけで終わる可能性も。。。。。。。。。。。。。。

カテゴリー: その他 | タグ: , , , | コメントする

Flowplayerを使ってみる(2)

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

Flowplayerで、mp3もストリーミング再生出来るようになるとか。

Streaming plugin:  audio

Flowplayerを使ってみる」で設定した環境に、追加設定してみる。

# DocumentRootは、/home/apache22/https。


% cd /home/apache22/https/flowplayer/
% wget 'http://flowplayer.org/releases/flowplayer.audio/flowplayer.audio-3.1.0.swf'
% cd example
% cp index.php index_mp3.php

% vi index_mp3.php   ・・・id=”player”のAタグを↓に変更。


<div id="audio" style="display:block;width:750px;height:30px;"
     href="<?php echo urlencode($_SERVER["QUERY_STRING"]) ?>"></div>

あと、すぐ下の<script> ~ </script>を↓に変更。


<script>
 // install flowplayer into container
 $f("audio", "../flowplayer-3.1.1.swf", {
 
 // fullscreen button not needed here
 plugins: {
       controls:{
               fullscreen: false,
               heightm: 30
       }
 },
 clip: {
         autoPlay: true,
         // optional: when playback starts close the first audio playback
         onBeforeBegin: function() {
                 $f("player").close();
         }
 }
 });
</script>

サンプルのmp3取得

% wget 'http://flowplayer.org/demos/plugins/fake_empire.mp3'

/flowplayer/example/index_mp3.php?/flowplayer/example/fake_empire.mp3
へアクセスして再生できればOK。

ウチの環境だと、↓こんな感じのURLになる。
ttps://qos.mine.nu/flowplayer/example/index_mp3.php?/flowplayer/example/fake_empire.mp3

mp4やflvと同じように、こちらもmp3にアクセスすると、勝手にFlowplayerで再生されるように、mod_rewriteの設定をイジる。


<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} .*(?:mp4|flv)$
RewriteCond %{HTTP_REFERER} !flowplayer-.*swf
RewriteRule (.*(?:mp4|flv)) /flowplayer/example/index.php?$1 [R]

# mp3用に追加
RewriteCond %{REQUEST_URI} .*(?:mp3)$
RewriteCond %{HTTP_REFERER} !flowplayer.audio-.*swf
RewriteRule (.*mp3) /flowplayer/example/index_mp3.php?$1 [R]
</IfModule>

% sudo /usr/local/etc/rc.d/apache22 reload

/flowplayer/example/fake_empire.mp3
へアクセスして、Flowplayerで再生できればOK。

ウチの環境だと、↓こんな感じのURL。
ttps://qos.mine.nu/flowplayer/example/fake_empire.mp3

↓画面イメージ。

flowplayer_mp3

カテゴリー: ソフトウェア | タグ: , , , , , | コメントする

Flowplayerを使ってみる

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

Flowplayer – Flash Video Player for the Web

を使えば、flvやmp4をストリーミング配信出来るらしい。不特定多数の方々に配信するなんて大それた事をするつもりは、サラサラ無く、自分用に使う事前提。オレオレ証明書を作成したのも、そのためだったり。

 Download Flowplayer – The Flash Video Player for the Web

からダウンロードして、DocumentRootのルートに展開してみた。

flowplayer/
    flowplayer-3.1.1.swf    ・・・Flowplayer本体
    flowplayer.controls-3.1.1.swf  ・・・よく分からず
    LICENSE.txt    ・・・freeを落としたので、GPLv3の規約が書かれている。
    README.txt    ・・・Flowplayerの更新履歴
    example/    ・・・Flowplayerの使用例がある

/flowplayer/example/index.html へアクセスすると、Flowplayerがhttp://e1h13.simplecdn.net/flowplayer/flowplayer.flv へアクセスして、自動で再生される。index.html内の、idがplayerなAタグのhrefを変更すれば再生するファイルを変更できる。ただ、毎回変更するのはクソ面倒なので、example/index.html を少々変更して、パラメータのファイルを再生するよう変更してみる。


% cd example
% cp index.html index.php
% vi index.php

<a  
     href="<?php echo urlencode($_SERVER["QUERY_STRING"]) ?>"  
     style="display:block;width:520px;height:330px"  
     id="player"> 
</a>

※ <?php ~ ?> の部分を変更

% wget http://e1h13.simplecdn.net/flowplayer/flowplayer.flv

https://qos.mine.nu/flowplayer/example/index.php?/flowplayer/example/flowplayer.flvへIE or Firefox or Operaでアクセスしてみる。
flowplayer.flvが、flowplayerでちゃんと再生されればOK。

わざわざ、パラメータで指定するのも面倒くさいので、mod_rewrite使って何とかしてみる事に。

 ↓

ってなればOKなので、


<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_URI} .*(?:mp4|flv)$
RewriteCond %{HTTP_REFERER} !flowplayer-.*swf
RewriteRule (.*(?:mp4|flv)) /flowplayer/example/index.php?$1 [R]
</IfModule>

※ flowplayerがストリーミング再生用にGETする場合はrewriteしないように、REFERERをチェックしている。

% sudo /usr/local/etc/rc.d/apache22 reload

へアクセスして、flowplayerで再生されればOK。

参考サイト

カテゴリー: ソフトウェア | タグ: , , , , , , , | コメントする

オレオレ証明書を作成する

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

オレオレ証明書についての詳細は、以下。

オレオレ証明書をオレ専用に使用する(オレ以外には使わない)分には、問題ないと思われる。たぶん。用途はクライアント認証。

作成するに辺り以下のサイトを特に参照させて頂いた。

以下にオレオレ証明書を作成した時の手順記述する。(FreeBSD-7.2)

% mkdir ssl-self-signed
% cd ssl-self-signed


■ オレオレ証明書用CA(認証局)の作成 (※ 県名等々は適当)
% /usr/src/crypto/openssl/apps/CA.pl -newca
CA certificate filename (or enter to create)

Making CA certificate …
Generating a 1024 bit RSA private key
…………………………………..++++++
……………………..++++++
writing new private key to ‘./demoCA/private/cakey.pem’
Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Kawasaki
Organization Name (eg, company) [Internet Widgits Pty Ltd]:foo bar Ltd
Organizational Unit Name (eg, section) []:System
Common Name (eg, YOUR name) []:qos.mine.nu-CA
Email Address []:root@qos.mine.nu

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
・・・
Write out database with 1 new entries
Data Base Updated

demoCAというディレクトリが出来ているはず。オレオレ証明書用CAの秘密鍵やら公開鍵やらもその中に作成される。


■ オレオレサーバ証明書の作成

% mkdir server-keys
% cd server-keys

秘密鍵を作成

% openssl genrsa -des3 -out secret.key 2048
Generating RSA private key, 2048 bit long modulus
…………………………………………………………+++
…………………………..+++
e is 65537 (0x10001)
Enter pass phrase for secret.key:
Verifying – Enter pass phrase for secret.key:
% openssl rsa -in secret.key -out secret-nopass.key
Enter pass phrase for secret.key:
writing RSA key

CSR(Certificate Signing Request)作成

% openssl req -new -key secret.key -out csr.pem
Enter pass phrase for secret.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Kawasaki
Organization Name (eg, company) [Internet Widgits Pty Ltd]:foo bar Ltd
Organizational Unit Name (eg, section) []:System
Common Name (eg, YOUR name) []:qos.mine.nu
Email Address []:root@qos.mine.nu

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

● オレオレCAで署名する

% cd ..
% cp /usr/src/crypto/openssl/apps/openssl.cnf .
% vi openssl.cnf
・・・
nsCertType          = server          ・・・コメントを外す
・・・
% openssl ca -in ./server-keys/csr.pem -out ./server-keys/server.cert -config ./openssl.cnf
Using configuration from ./openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
・・・
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Server
            Netscape Comment:
                OpenSSL Generated Certificate
・・・
Sign the certificate? [y/n]:y
CERTIFICATE WILL NOT BE CERTIFIED

 


■ クライアント証明書の作成

% mkdir client-keys

秘密鍵を作成(クライアント証明書用)
% openssl genrsa -des3 -out secret.key 2048
Generating RSA private key, 2048 bit long modulus
……………+++
……………………….+++
e is 65537 (0x10001)
Enter pass phrase for secret.key:
Verifying – Enter pass phrase for secret.key:

CSR(Certificate Signing Request)作成 (クライアント証明書用)

% openssl req -new -key secret.key -out csr.pem
Enter pass phrase for secret.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Kanagawa
Locality Name (eg, city) []:Kawasaki
Organization Name (eg, company) [Internet Widgits Pty Ltd]:foo bar Ltd
Organizational Unit Name (eg, section) []:user
Common Name (eg, YO
UR name) []:user
Email Address []:user@qos.mine.nu

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

 

オレオレCAで署名する (クライアント証明書用)
% cd ..
% vi openssl.cnf
・・・
# nsCertType          = server          ・・・コメントにする
nsCertType = client, email              ・・・コメントを外す
・・・

% openssl ca -in ./client-keys/csr.pem -out ./client-keys/client.cert -config ./openssl.cnf
Using configuration from ./openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
・・・
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Cert Type:
                SSL Client, S/MIME
            Netscape Comment:
                OpenSSL Generated Certificate
・・・
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

● ブラウザにインポートしやすい形(秘密鍵と証明書のセット)にする

% cd client-keys
% openssl pkcs12 -export -in client.cert -inkey secret.key -out client.p12

出来たclient.p12をSCPとかで、クライアント端末に持ってきて、
ブラウザにインポートする。

サーバ証明書が見知らぬCAで署名されていると、「おまえ誰だよ?」的な感じで警告が出るので、オレオレ証明書用CAの証明書もブラウザにインポートする。demoCA/cacert.pem が、オレオレ証明書用CAの証明書なので、こいつもSCPとかでクライアント端末に持ってきて、インポート。


■ クライアント認証をするためのApache2の設定

辺りを設定する必要がある。

● 設定記述イメージ

Listen 443
NameVirtualHost *:443
<IfModule mod_ssl.c>
        <VirtualHost *:443>
            SSLEngine on
            SSLCertificateFile    /home/user/ssl-self-signed/server-keys/server.cert
            SSLCertificateKeyFile /home/user/ssl-self-signed/server-keys/secret-nopass.key
            SSLCACertificateFile /home/user/ssl-self-signed/demoCA/cacert.pem
            SSLVerifyClient require
・・・
            (他の設定)
        </VirtualHost>
</IfModule>

設定完了後、Apacheを再起動して、クライアント証明書をインポートしたブラウザでhttpsアクセス。証明書を要求され、インポートした証明書を選択することで正常にアクセスできたら成功。

Google ChromeはSSLクライアント認証をサポートしてないようなので、IEかFirefoxかOpera辺りで。

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