2013年4月27日土曜日

Android 2.3.4での証明書取り込み

通信不可だが、解約したAndroid 2.3.4で試してみる。(ホーム+電源ボタン同時押しで採取したキャプチャを貼り付ける。)

●準備
[設定] - [USB接続] をクリック。



カードリーダモード(デフォルト)で接続される。
[USBストレージをONにする]をクリック。



[OK]をクリック。



この状態で、PCで認識されるリムーバルディスクに証明書をコピーする。
 
(コピー場所は任意)




●手順
[設定] - [位置情報とセキュリティ] をクリック。

 

[microSDからインストール] をクリック。



PKCS#12形式の証明書をクリック。
※今回は、cert5.8-mickey.p12をクリック。
※拡張子は.crtか.p12じゃないとダメな模様。(.der、.cer、.pem、.txtは認識せず)
 
 



PKCS#12形式の証明書のパスワードを入力して、[OK] をクリック。



証明書の名前を指定して、[OK] をクリック。
※Common Name(デフォルト)のままとした。

 

認証情報ストレージのパスワードを入力して、[OK] をクリック。

 

すると、「安全な認証情報の使用」にチェックされた状態となる。



証明書のインストールと同時に、PKCS#12がMicroSDカードから消されるので、事前にバックアップを取っておいたほうが良い。


2013年1月2日水曜日

Oracle Enterprise ManagerでリスナーがOracleインスタンスを認識しない

久しぶりにOracleを起動したらORA-28001が出たので、Oracle11gからの機能であるパスワード有効期限に引っかかった。
以下のとおり、修正した。
====================================================================
bash-3.2$ sqlplus /nolog
SQL> connect /as sysdba
SQL> alter profile default limit password_life_time unlimited;
ユーザーが変更されました。
SQL> alter user sys identified by password;
ユーザーが変更されました。
SQL> alter user system identified by password;
ユーザーが変更されました。
SQL> alter user sysman identified by password;
ユーザーが変更されました。
SQL> alter user dbsnmp identified by password;
ユーザーが変更されました。
SQL> alter user sys account unlock;
ユーザーが変更されました。
SQL> alter user system account unlock;
ユーザーが変更されました。
SQL> alter user sysman account unlock;
ユーザーが変更されました。
SQL> alter user dbsnmp account unlock;
ユーザーが変更されました。
SQL> quit
====================================================================

しかし、それでもEMから繋がらなかった。EM上でORA-12505が発生する。
TNSpingは通る。
====================================================================
bash-3.2$ tnsping orcl 1
TNS Ping Utility for Solaris: Version 11.2.0.1.0 - Production on 02-1月 -2013 06:09:22
Copyright (c) 1997, 2009, Oracle.  All rights reserved.
パラメータ・ファイルを使用しました:

エイリアスを解決するためにTNSNAMESアダプタを使用しました。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = sol10-oracle)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))に接続の試行中
OK (10ミリ秒)
====================================================================

リスナーを調べたところ、接続先サービス名を認識していないようだ。
====================================================================
bash-3.2$ lsnrctl
LSNRCTL for Solaris: Version 11.2.0.1.0 - Production on 02-1月 -2013 06:09:32
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
LSNRCTLへようこそ。詳細は"help"と入力してください。
LSNRCTL> status
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sol10-oracle)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Solaris: Version 11.2.0.1.0 - Production
開始日                    02-1月 -2013 06:05:21
稼働時間                  0 日 0 時間 4 分 12 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /oracle/product/11.2.0/OraHome1/network/admin/listener.ora
ログ・ファイル            /oracle/product/11.2.0/diag/tnslsnr/sol10-oracle/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sol10-oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。
LSNRCTL> exit
====================================================================

リスナー定義ファイルを以下のとおり変更した。(11gR2インストール後にリスナー定義を行わなかったためかも)
====================================================================
bash-3.2$ vi listener.ora
<変更前>
# listener.ora Network Configuration File: /oracle/product/11.2.0/OraHome1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = sol10-oracle)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
ADR_BASE_LISTENER = /oracle/product/11.2.0

<変更後>
# listener.ora Network Configuration File: /oracle/product/11.2.0/OraHome1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = sol10-oracle)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
ADR_BASE_LISTENER = /oracle/product/11.2.0
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = (PROTOCOL = TCP)(HOST = sol10-oracle)(PORT = 1521))
      (SID_NAME = orcl)
    )
  )
====================================================================

リスナーを再起動した結果、接続先サービス名を認識した。
====================================================================
bash-3.2$ lsnrctl start
LSNRCTL for Solaris: Version 11.2.0.1.0 - Production on 02-1月 -2013 06:14:43
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
/oracle/product/11.2.0/OraHome1/bin/tnslsnrを起動しています。お待ちください...
TNSLSNR for Solaris: Version 11.2.0.1.0 - Production
システム・パラメータ・ファイルは/oracle/product/11.2.0/OraHome1/network/admin/listener.oraです。
ログ・メッセージを/oracle/product/11.2.0/diag/tnslsnr/sol10-oracle/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sol10-oracle)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sol10-oracle)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Solaris: Version 11.2.0.1.0 - Production
開始日                    02-1月 -2013 06:14:43
稼働時間                  0 日 0 時間 0 分 0 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /oracle/product/11.2.0/OraHome1/network/admin/listener.ora
ログ・ファイル            /oracle/product/11.2.0/diag/tnslsnr/sol10-oracle/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sol10-oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
サービスのサマリー...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
bash-3.2$ lsnrctl
LSNRCTL for Solaris: Version 11.2.0.1.0 - Production on 02-1月 -2013 06:14:53
Copyright (c) 1991, 2009, Oracle.  All rights reserved.
LSNRCTLへようこそ。詳細は"help"と入力してください。
LSNRCTL> status
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sol10-oracle)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Solaris: Version 11.2.0.1.0 - Production
開始日                    02-1月 -2013 06:14:43
稼働時間                  0 日 0 時間 0 分 11 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /oracle/product/11.2.0/OraHome1/network/admin/listener.ora
ログ・ファイル            /oracle/product/11.2.0/diag/tnslsnr/sol10-oracle/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sol10-oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
サービスのサマリー...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
LSNRCTL> exit
====================================================================

2012年12月9日日曜日

Solaris IPv4アドレス割り当てでの試行

別々のNICに同じIPv4アドレスの割り当て自体はできる。但し、同時に活性化はできない。(自分の予想とおりであった)

<事前準備>
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname.e1000g1
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g0
bash-3.00# cp /etc/hostname.e1000g0 /etc/hostname6.e1000g1

bash-3.00# more /etc/hosts
#
# Internet host table
#
127.0.0.1 localhost
::1 localhost
172.16.20.5 sol10 loghost

bash-3.00# reboot
bash-3.00# ifconfig e1000g1 inet6 up
bash-3.00# ifconfig e1000g0 inet6 up

<実行手順>
bash-3.00# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
        ether 0:c:29:d2:61:36
e1000g1: flags=1000842<BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 172.16.20.5 netmask ffffff00 broadcast 172.16.20.255
        ether 0:c:29:d2:61:40
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
        inet6 ::1/128
e1000g0: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 2
        inet6 fe80::20c:29ff:fed2:6136/10
        ether 0:c:29:d2:61:36
e1000g1: flags=2004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 3
        inet6 fe80::20c:29ff:fed2:6140/10
        ether 0:c:29:d2:61:40

bash-3.00# ifconfig e1000g1 inet up
ifconfig: setifflags: SIOCSLIFFLAGS: e1000g1: Cannot assign requested address

なお、以下の場合もダメだった。
(1) /etc/hostsファイルに同じIPアドレス(172.16.20.5)で違うホスト名(sol10以外)を割り当てる。
(2) /etc/hostname.e1000g1も(1)で設定した違うホスト名にしてリブートする。

2012年10月26日金曜日

Solaris10でのDHCPデバッグ

DHCPプロトコルは以下のとおり。矢印の左側がDHCPクライアント、右側がDHCPサーバを指す。

<IPアドレス未取得の場合>
 →Message type = DHCPDISCOVER
 ←Message type = DHCPOFFER
 →Message type = DHCPREQUEST
 ←Message type = DHCPACK

<IPアドレス取得済みマシンがリブートした時>
 →Message type = DHCPREQUEST
 ←Message type = DHCPACK

Solaris10にてDHCPのデバッグとして、2通りのやり方がある。
 1.DHCPサーバ側でパケットをキャプチャする
 2.DHCPサーバをデバッグモードで動かす

●DHCPサーバ側でパケットをキャプチャする

以下、snoop実行時にDHCPクライアントが再起動した時の例。

bash-3.00# snoop -d e1000g0 -o /tmp/snoop.out udp port 67 or udp port 68
DHCPクライアントが再起動後、DHCPサーバ側にて[Ctrl]+[C]で閉じる。

bash-3.00# snoop -i /tmp/snoop.out -x0 -v
ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 1 arrived at 5:04:33.73759
ETHER:  Packet size = 342 bytes
ETHER:  Destination = ff:ff:ff:ff:ff:ff, (broadcast)
ETHER:  Source      = 0:c:29:67:84:89,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 328 bytes
IP:   Identification = 0
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 255 seconds/hops
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 7aa5
IP:   Source address = 0.0.0.0, OLD-BROADCAST
IP:   Destination address = 255.255.255.255, BROADCAST
IP:   No options
IP:
UDP:  ----- UDP Header -----
UDP:
UDP:  Source port = 68
UDP:  Destination port = 67 (BOOTPS)
UDP:  Length = 308
UDP:  Checksum = 8943
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 0.0.0.0
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPREQUEST
DHCP: Requested IP Address = 192.168.10.3
DHCP: IP Address Lease Time = -1 seconds
DHCP: Maximum DHCP Message Size = 1472 bytes
DHCP: Client Class Identifier = "SUNW.i86pc"
DHCP: Requested Options:
DHCP:    1 (Subnet Mask)
DHCP:    3 (Router)
DHCP:    6 (DNS Servers)
DHCP:   12 (Client Hostname)
DHCP:   15 (DNS Domain Name)
DHCP:   28 (Broadcast Address)
DHCP:   43 (Vendor Specific Options)
DHCP: Client Hostname = sol10-dhcp-client

           0: ffff ffff ffff 000c 2967 8489 0800 4500    ........)g....E.
          16: 0148 0000 4000 ff11 7aa5 0000 0000 ffff    .H..@...z.......
          32: ffff 0044 0043 0134 8943 0101 0600 5b32    ...D.C.4.C....[2
          48: ba17 0000 0000 0000 0000 0000 0000 0000    ................
          64: 0000 0000 0000 000c 2967 8489 0000 0000    ........)g......
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         160: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         176: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         192: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         208: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         224: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         240: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         256: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         272: 0000 0000 0000 6382 5363 3501 0332 04c0    ......c.Sc5..2..
         288: a80a 0333 04ff ffff ff39 0205 c03c 0a53    ...3.....9...<.S
         304: 554e 572e 6938 3670 6337 0701 0306 0c0f    UNW.i86pc7......
         320: 1c2b 0c11 736f 6c31 302d 6468 6370 2d63    .+..sol10-dhcp-c
         336: 6c69 656e 74ff                             lient.
ETHER:  ----- Ether Header -----
ETHER:
ETHER:  Packet 2 arrived at 5:04:33.75531
ETHER:  Packet size = 342 bytes
ETHER:  Destination = 0:c:29:67:84:89,
ETHER:  Source      = 0:c:29:52:33:cc,
ETHER:  Ethertype = 0800 (IP)
ETHER:
IP:   ----- IP Header -----
IP:
IP:   Version = 4
IP:   Header length = 20 bytes
IP:   Type of service = 0x00
IP:         xxx. .... = 0 (precedence)
IP:         ...0 .... = normal delay
IP:         .... 0... = normal throughput
IP:         .... .0.. = normal reliability
IP:         .... ..0. = not ECN capable transport
IP:         .... ...0 = no ECN congestion experienced
IP:   Total length = 328 bytes
IP:   Identification = 21163
IP:   Flags = 0x4
IP:         .1.. .... = do not fragment
IP:         ..0. .... = last fragment
IP:   Fragment offset = 0 bytes
IP:   Time to live = 255 seconds/hops
IP:   Protocol = 17 (UDP)
IP:   Header checksum = 0000
IP:   Source address = 192.168.10.4, sol10-dhcp-server
IP:   Destination address = 192.168.10.3, 192.168.10.3
IP:   No options
IP:
UDP:  ----- UDP Header -----
UDP:
UDP:  Source port = 67
UDP:  Destination port = 68 (BOOTPC)
UDP:  Length = 308
UDP:  Checksum = 969D
UDP:
DHCP: ----- Dynamic Host Configuration Protocol -----
DHCP:
DHCP: Hardware address type (htype) =  1 (Ethernet (10Mb))
DHCP: Hardware address length (hlen) = 6 octets
DHCP: Relay agent hops = 0
DHCP: Transaction ID = 0x5b32ba17
DHCP: Time since boot = 0 seconds
DHCP: Flags = 0x0000
DHCP: Client address (ciaddr) = 0.0.0.0
DHCP: Your client address (yiaddr) = 192.168.10.3
DHCP: Next server address (siaddr) = 0.0.0.0
DHCP: Relay agent address (giaddr) = 0.0.0.0
DHCP: Client hardware address (chaddr) = 00:0C:29:67:84:89
DHCP:
DHCP: ----- (Options) field options -----
DHCP:
DHCP: Message type = DHCPACK
DHCP: DHCP Server Identifier = 192.168.10.4
DHCP: UTC Time Offset = 32400 seconds
DHCP: RFC868 Time Servers at = 192.168.10.4
DHCP: IP Address Lease Time = 86400 seconds
DHCP: Broadcast Address = 192.168.10.255
DHCP: Perform Router Discovery Flag flag = 0x1
DHCP: Subnet Mask = 255.255.255.0

           0: 000c 2967 8489 000c 2952 33cc 0800 4500    ..)g....)R3...E.
          16: 0148 52ab 4000 ff11 0000 c0a8 0a04 c0a8    .HR.@...........
          32: 0a03 0043 0044 0134 969d 0201 0600 5b32    ...C.D.4......[2
          48: ba17 0000 0000 0000 0000 c0a8 0a03 0000    ................
          64: 0000 0000 0000 000c 2967 8489 0000 0000    ........)g......
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         160: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         176: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         192: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         208: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         224: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         240: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         256: 0000 0000 0000 0000 0000 0000 0000 0000    ................
         272: 0000 0000 0000 6382 5363 3501 0536 04c0    ......c.Sc5..6..
         288: a80a 0402 0400 007e 9004 04c0 a80a 0433    .......~.......3
         304: 0400 0151 801c 04c0 a80a ff1f 0101 0104    ...Q............
         320: ffff ff00 ff00 0000 0000 0000 0000 0000    ................
         336: 0000 0000 0000                             ......

●DHCPサーバをデバッグモードで動かす

以下、デバッグモードで実行時にDHCPクライアントが再起動した時の例。

bash-3.00# svcadm disable -t svc:/network/dhcp-server
bash-3.00# /usr/lib/inet/in.dhcpd -d -v
50899ead:  Daemon Version: 3.5
50899ead:  Maximum relay hops: 4
50899ead:  Run mode is: DHCP Server Mode.
50899ead:  Datastore resource: SUNWfiles
50899ead:  Location: /var/dhcp
50899ead:  DHCP offer TTL: 10
50899ead:  ICMP validation timeout: 1000 milliseconds, Attempts: 1.
50899ead:  Name service update enabled, timeout: 15 seconds
50899ead:  Maximum concurrent clients: 1024
50899ead:  Maximum threads: 256
50899ead:  Read 3 entries from DHCP macro database on Fri Oct 26 05:18:53 2012
50899ead:  Monitor (0003/e1000g0) started...
50899ead:  Thread Id: 0003 - Monitoring Interface: e1000g0 *****
50899ead:  MTU: 1500    Type: SOCKET
50899ead:  Broadcast: 192.168.10.255
50899ead:  Monitor (0004/e1000g1) started...
50899ead:  Thread Id: 0004 - Monitoring Interface: e1000g1 *****
50899ead:  MTU: 1500    Type: SOCKET
50899ead:  Broadcast: 10.20.30.255
50899ead:  Netmask: 255.255.255.0
50899ead:  Netmask: 255.255.255.0
50899ead:  Address: 192.168.10.4
50899ead:  Address: 10.20.30.4
★ここで待ち
50899f86:  Datagram received on network device: e1000g1(limited broadcast)
50899f86:  Datagram received on network device: e1000g0(limited broadcast)
50899f86:  e1000g1(limited broadcast): There is no 10.20.30.0 dhcp-network table for DHCP client's network.
50899f86:  name_avail:  unqualified name
qualified with local domain: sol10-dhcp-client.private.net.
50899f86:  name_avail(T):  gethostbyname_r failed
50899f86:  name service update on behalf of client with ID 000C29678489 failed because requested name was not fully-qualified and no DNS domain name was specified for this client in the dhcptab
50899f86:  do_nsupdate:  dns_puthostent returned -1
50899f86:  Client: 01000C29678489 maps to IP: 192.168.10.3
50899f86:  Unicasting datagram to 192.168.10.3 address.
50899f86:  Adding ARP entry: 192.168.10.3 == 000C29678489
★[Ctrl]+[C]押下
^C5089a050:  Signal: INT received...Exiting
5089a050:  Closing interface: e1000g0
5089a050:  Monitor (0003/e1000g0): exiting.
5089a050:  Interface statistics for: e1000g0 **************
5089a050:  Pending DHCP offers: 0
5089a050:  Total Packets Transmitted: 1
5089a050:  Total Packets Received: 1
5089a050:  Total Packet Duplicates: 0
5089a050:  Total Packets Dropped: 0
5089a050:  Total Packets Processed: 1
5089a050:  Total Protocol Errors: 0
5089a050:  Closing interface: e1000g1
5089a050:  Monitor (0004/e1000g1): exiting.
5089a050:  Interface statistics for: e1000g1 **************
5089a050:  Pending DHCP offers: 0
5089a050:  Total Packets Transmitted: 0
5089a050:  Total Packets Received: 1
5089a050:  Total Packet Duplicates: 0
5089a050:  Total Packets Dropped: 0
5089a050:  Total Packets Processed: 0
5089a050:  Total Protocol Errors: 0
5089a050:  Daemon terminated.

2012年9月17日月曜日

Redmineの構築(その2)

Windows 7上でRedmine2.x系の構築を行う。

・apache
apacheのサイト(http://httpd.apache.org/download.cgi#apache22)から以下をダウンロードして、インストールする。
 httpd-2.2.22-win32-x86-no_ssl.msi

・JRE
http://www.oracle.com/technetwork/java/javase/downloads/jre6u35-downloads-1836473.html)より、以下をダウンロードして、インストールする。
 jre-6u35-windows-i586.exe

・MySQL
MySQLのGUIを使うため、マイクロソフト(http://www.microsoft.com/ja-jp/net/netfx4/download.aspx)より、.NET Framework 4をインストールする。

MySQLのサイト(http://dev.mysql.com/downloads/)から以下をダウンロードして、インストールする。
 mysql-installer-community-5.5.27.2.msi

・Ruby
Rubyのサイト(http://rubyinstaller.org/downloads/)より、以下をダウンロードして、インストールする。
 rubyinstaller-1.8.7-p370.exe
 DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe

・redmine
 
redmineのサイト(http://rubyforge.org/frs/?group_id=1850)より、redmine-2.0.3.zipをダウンロードする。

・ImageMagick
rubyのサイト(http://rubyforge.org/frs/?group_id=12)より、RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zipをダウンロードする。ファイル解凍後、C:\Tempに置く。ImageMagick-6.5.6-8-Q8-windows-dll.exeを実行し、C/C++ のヘッダーファイルも一緒にインストールする。(インストール時のチェックボックスでチェックをつける。)
<事前準備>
①MySQL
・MySQL Workbenchを起動し、[Open Connection to start querying]より、スキーマredmineを作成する。
・[Manage Security]より、ユーザredmineを作成する。Object Rights、DDL Rights、Other Rightsにて、すべての権限を付与する。

②Devkit
DevkitをC:\Devkitにインストール後、以下を実行する。
C:\Devkit> ruby dk.rb init
C:\Devkit> ruby dk.rb install
ダウンロードしたファイルを解凍して、C:\redmineとする。

③Gemfile
・ImageMagick のインストールディレクトリを環境変数の PATH に追加する。
・ImageMagick のインストールディレクトリ内にある include ディレクトリのパスを環境変数 CPATH に追加する。
・ImageMagick のインストールディレクトリ内にある lib ディレクトリのパスを環境変数 LIBRARY_PATH に追加する。
<Webrickでの構築手順>
・C:\redmine> gem install bundler
・C:\redmine> bundle install
・config/database.example.yml をコピーして config/database.yml を作成する。
また、config/database.yml を編集し、"production"環境用のデータベース設定を行う。
====================================
 production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: redmine
====================================
・以下のサイトからダウンロードしたlibmysql.dllをC:\Ruby\binにコピーする。
http://www.dll-files.com/dllindex/dll-files.shtml?libmysql

・C:\Program Files\ImageMagick-6.5.6-Q8\CORE_RL_magick_.dllをC:\Ruby\binにコピーする。

・C:\redmine> rake generate_secret_token
・C:\redmine> rake db:migrate RAILS_ENV=production
・C:\redmine> rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi,fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja
====================================
Default configuration data loaded.

・C:\redmine> ruby script/rails server webrick -e production
[Ctrl] + Cで閉じる。

<Mongrelでの構築手順>
・C:\redmine> gem install mongrel --pre
・C:\redmine\gemfileに以下を追記。
gem 'mongrel', '>= 1.2.0.pre2'
・C:\redmine> ruby script/rails server mongrel -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> mongrel_rails service::install -N "Redmine" -c "C:\redmine" -p 3000 -e production

・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config Redmine start= auto depend= MySql55

・但し、自動起動は不可の模様。C:\redmine\log\mongrel.logより
 C:/Ruby/lib/ruby/gems/1.8/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:251:
 in `require': no such file to load -- dispatcher (LoadError)

 ★unicorn、passengerも同様、Windowsでは動かない。

<thinでの構築手順>
・C:\redmine\gemfileに以下を追記。
gem 'thin'
・C:\redmine> bundle install
・C:\redmine> ruby script\rails server thin -e production
[Ctrl] + Cで閉じる。
・自動起動させたいと考え、http://www.microsoft.com/en-us/download/details.aspx?id=17657より、rktools.exeをダウンロードして、インストールする。

・管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> "C:\Program Files\ Resource Kits\Tools\INSTSRV.EXE" _service "C:\Program Files\Windows Resource Kits\Tools\SRVANY.EXE"

・regeditを実行して、レジストリを編集する。

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_serviceに、Parametersという名前のキーを追加する
2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\redmine_service\Parametersに、Application、AppParameters、AppDirectoryという名前の文字列値を新規作成する
Applicationは、Ruby.exeのフルパス。例えば、C:\Ruby\bin\ruby.exe
AppParametersは、thinとthinに渡すパラメータ。例えば、C:\Ruby\bin\ start -p 3000 -e production
AppDirectoryは、redmineをインストールした場所。例えば、C:\redmine

・MySQLとの依存関係を持たせたいので、管理者権限でDOCコマンドを起動して、以下を実行する。
C:\redmine> sc config redmine_service start= auto depend= MySql55
・リブートする。

<subdirectory化> ※rails3のみ
・C:\redmine\config.ruの編集
[変更前]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment',  __FILE__)
run RedmineApp::Application
[変更後]
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment',  __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
  run RedmineApp::Application
end

・C:\redmine\config\environment.rbの編集
最終行に以下を追記
[変更前]
RedmineApp::Application.initialize!
[変更後]
RedmineApp::Application.initialize!
ENV['RAILS_RELATIVE_URL_ROOT'] = "/redmine"

[変更前]
  config.active_support.deprecation = :log
end
・C:\redmine\config\environments\production.rbの編集
最終行より少し前に以下を追記

[変更後]
  config.active_support.deprecation = :log
  config.action_controller.asset_path = "/redmine%s"
end
・C:\redmine> ruby script/rails server thin -e production -p 3000
http://localhost:3000/redmine
でアクセス可能となる。

<Proxy化>
・httpd.confの修正
LoadModule alias_module modules/mod_alias.so
~省略~
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so

~省略~
Alias /redmine/ "C:/redmine/public/"
<Directory "C:/redmine/public">
    Options ExecCGI Includes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
ProxyPass /redmine http://localhost:3000/redmine
ProxyPassReverse /redmine http://localhost:3000/redmine

・apache再起動
http://<FQDN>/redmine
でアクセス可能となる。

2012年5月18日金曜日

Solaris10でDHCPサーバ構築

Solaris10(x86)でDHCPサーバを構築する。

①DNSの起動
bash-3.00# /usr/local/sbin/named -c /usr/local/etc/named.conf

②DHCPサーバの構成
<前提>

DHCPサーバの固定IPアドレスは192.168.10.4とする。

bash-3.00# /usr/sadm/admin/bin/dhcpmgr &
[1] 1287
bash-3.00# Java Accessibility Bridge for GNOME loaded.

・DHCPサーバとして構成を選択して[了解]をクリックする。


・テキストファイルを選択して[次へ]をクリックする。


・/etc/dhcpを入力して[次へ]をクリックする。



・/etc/hostsを選択して[次へ]をクリックする。



・リース期間を1日とし、「クライアントにリースの更新を許可する」にチェックを入れて[次へ]をクリックする。


・DNSドメインに自ドメインが入っていることを確認して、[次へ]をクリックする。



・ネットワークアドレスとサブネットマスクを設定して、[次へ]をクリックする。



・「ネットワークタイプ:ローカルエリア」、「ルータ検索プロトコルを使用」にチェックを入れて、[次へ]をクリックする。



・NISは使わないので、そのまま[次へ]をクリックする。



・NIS+も使わないので、そのまま[次へ]をクリックする。


・画面内容を確認して、[完了]をクリックする。


・しばらく(2~3分)経過後、以下が表示される。



・IPアドレスの割り当て数を指定する。(例:10個)



・開始IPアドレスやクライアントのホスト名のルールを指定する。










・リースタイプは動的とする。







③DHCPクライアントの設定(Solarisの場合)
# touch /etc/dhcp.e1000g0
# shutdown -y -i6 -g0
※/etc/hosts、/etc/netmask、/etc/defaultrouterには設定不要。/etc/hostname.<NIC>と/etc/nodenameの設定は必要。



リブート後の設定状況(クライアント)は以下のとおり。自動でホスト名とIPアドレスが設定される。


④IPアドレス配布状況の確認

・表示再表示より、IPアドレス配布状況の確認が可能。(例:192.168.10.160が割り当て済み)

※IPアドレスの有効期限などが分かる。



・/etc/dhcp配下には管理ファイルが格納されていた。(書式は不明)



<参考>
http://docs.oracle.com/cd/E24845_01/index.html
→Solaris のシステム管理 (IP サービス)

2012年5月9日水曜日

OpenAM10.0でのSAMLメタデータ入出力

OpenAM10.0(on CentOS5.8)にてSAMLメタデータ入出力仕様を調査する。
メタデータはOpenAM画面(以降、画面とする)からもOpenAMコマンド(以降、コマンドとする)からも登録可能。


※コマンドを利用する場合は別途ssoadmをインストールする必要あり。

1.準備
まず、画面よりトラストサークルをsamlcotとして、ホストアイデンティティープロバイダ(IDP)とホストサービスプロバイダ(SP)を作成する。

メタデータはexportmetadata.jspを使って出力可能である。amadminでログイン後、ブラウザのURLに
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
を直打ちしてエキスポートする。

2.画面
OpenAM管理コンソールより、一旦クリーンな状態(IDP、SPが未登録)にする。
ただし、トラストサークルのみ残しておく。
2.1.IDP側での登録
リモートアイデンテティプロバイダ(IDP)を作成する。

2.1.1.アップロード
ローカルPCのメタデータを指定。


[設定] ボタンを押下。化けた。


登録はされている。

2.1.2.URL指定
これはメタデータの交換の時に使う。リモートサービスプロバイダとして、相手(SP側)のURLを指定する。以下のURLを指定。
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp



2.2.SP側での登録
リモートサービスプロバイダ(SP)を作成する。

2.2.1.アップロード
ローカルPCのメタデータを指定。


[設定] ボタンを押下。化けた。



登録はされている。



2.2.2.URL指定
これはメタデータの交換の時に使う。リモートアイデンティティープロバイダとして、相手(IDP側)のURLを指定する。以下のURLを指定。
http://goodjob-idp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp


3.コマンド
まず、http://www.forgerock.org/openam.html より ssoAdminTools_10.0.0.zip をダウンロードする。

3.1.ssoadmセットアップ
[root@goodjob-idp src]# mkdir /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp src]# cd /usr/local/ssoAdminTools_10.0.0
[root@goodjob-idp ssoAdminTools_10.0.0]# unzip ssoAdminTools_10.0.0.zip
[root@goodjob-idp ssoAdminTools_10.0.0]# JAVA_HOME=/usr/java/jdk1.6.0_32
[root@goodjob-idp ssoAdminTools_10.0.0]# export JAVA_HOME
[root@goodjob-idp ssoAdminTools_10.0.0]# ./setup
OpenAM サーバーの設定ファイルのパス [/root/openam]:/var/lib/openam
デバッグディレクトリ [/usr/local/ssoAdminTools_10.0.0/debug]:/var/lib/openam/openam/debug
ログディレクトリ [/usr/local/ssoAdminTools_10.0.0/log]:/var/lib/openam/openam/log
スクリプトは次のディレクトリに正しく設定されています:  /usr/local/ssoAdminTools_10.0.0/openam
デバッグディレクトリは /var/lib/openam/openam/debug です。
ログディレクトリは /var/lib/openam/openam/log です。
この tools.zip のバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
サーバーインスタンスのバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
※SPも同様。

--------------------------------------------------------------
3.2.IDPメタデータ出力
[root@goodjob-idp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-idp bin]# vi /tmp/pwd.txt
※IDP側のamadminのパスワードを記載する。
[root@goodjob-idp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-idp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-idp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /idp -m ../idp-standard.xml -x ../idp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../idp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../idp-standard.xml に書き込まれました。

--------------------------------------------------------------
3.3.SPメタデータ出力 ★やってみたが、これは使えなかった★
[root@goodjob-sp ssoAdminTools_10.0.0] #cd /usr/local/ssoAdminTools_10.0.0/openam/bin
[root@goodjob-sp bin]# vi /tmp/pwd.txt
※SP側のamadminのパスワードを記載する。
[root@goodjob-sp bin]# chmod 400 /tmp/pwd.txt
[root@goodjob-sp bin]# ./ssoadm create-metadata-templ -y "http://goodjob-sp.openam.com:8080/openam" -u amadmin -f /tmp/pwd.txt -i /sp -m ../sp-standard.xml -x ../sp-extended.xml
レルム {1} のホストエンティティー設定が、ファイル ../sp-extended.xml に書き込まれました。
レルム {1} のホストエンティティー記述子が、ファイル ../sp-standard.xml に書き込まれました。

出力したファイルの中身を見たところ、SPのメタデータを<IDPSSODescriptor>として出力してしまう。
※OpenAM 10.0のバグと思われる。IDPとSPをサーバ単位で分けた環境で確認済み。

よって、今回は「1.準備」で取得した
http://goodjob-sp.openam.net:8080/openam/saml2/jsp/exportmetadata.jsp
のメタデータを取得することにする。

3.4.コマンドでの登録
OpenAM管理コンソールより、クリーンな状態(IDP、SPが未登録)にする。

3.4.1.SP側でのトラストサークル作成
[root@goodjob-sp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。

3.4.2.IDP側でのトラストサークル作成
[root@goodjob-idp bin]# ./ssoadm create-cot -u amadmin -f /tmp/pwd.txt -t samlcot -e /
トラストサークル samlcot が作成されました。

3.4.3.SP側でのSPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-sp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../exportmetadata-sp.xml -t samlcot -c saml2
ファイル ../exportmetadata-sp.xml をインポートしました。

3.4.4.IDP側でのIDPメタデータ入力
トラストサークルはsamlcotとする。
[root@goodjob-idp bin]# ./ssoadm import-entity -u amadmin -f /tmp/pwd.txt -e / -m ../idp-standard.xml -x ../idp-extended.xml  -t samlcot -c saml2
ファイル ../idp-standard.xml をインポートしました。
ファイル ../idp-extended.xml をインポートしました。

3.5.登録確認
3.5.1.IDP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?



3.5.2.SP側の連携タブ押下時
アクセスできたが、インスタンス(サーブレットコンテナ)再起動は不要?



4.メタデータ登録のチェック処理

[設定] ボタンのForm文のactionは../task/CreateRemoteIDP(またはCreateRemoteSP)

以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\CreateRemoteIDP.java(またはCreateRemoteSP.java)

その中でさらに以下が呼ばれる。
\openam_src_10.0.0\products\federation\openfm\source\com\sun\identity\workflow
\ImportSAML2MetaData.javaのimportData()

この中でメタデータを受け取って、getEntityDescriptorElement()で解析している模様。

<チェック内容>
・メタデータがnullでない。
・メタデータ(ドキュメント)のローカル名がEntityDescriptor、もしくは名前空間URIが"urn:oasis:names:tc:SAML:2.0:metadata"である。
・メタデータの署名検証にて問題なし。
※なお、署名値(<ds:Signature>タグ)がない場合は、エラーとしない。
・名前空間に"urn:oasis:names:tc:SAML:2.0:metadata"を持つ<RoleDescriptor>タグを取得し、
名前空間に"http://www.w3.org/2000/xmlns/"を持つtype属性の属性値が"AttributeQueryDescriptorType"、もしくは
":AttributeQueryDescriptorType"で終わる。


<参考>
http://openam.forgerock.org/doc/admin-guide/index.html#chap-federation
および
ssoadmコマンドのヘルプ、OpenAM10.0のソース