2013年1月29日火曜日

[番外編] Tomcat SSL通信

■Tomcat7でSSL通信
(1)SSLサーバ証明書要求
  ・秘密鍵生成
  openssl genrsa -des3 -out [秘密鍵ファイル名] 4096

 ・CSR生成
  openssl req -new -key [秘密鍵ファイル名] -out [出力CSRファイル名.csr]

(2)サーバ証明書発行依頼
 ・エンジョイSSLを使用。
   http://www.e-ssldirect.com/product/rapidssl.php

 ・CSRをテキスト表示して申込フォームに貼り付け
    openssl req -noout -text -in [CSRファイル名]

(3)証明書受取
   指定した管理者メールアドレス(例えば webmaster@ホスト名)でメールを受け取れるようにする
 一時的にでOK

 受け取ったメールアドレスに発行するためのURLが書いてあるのでそのページを見る
 そうすると審査が完了して証明書が発行される。

 見に行ったページにサーバ証明書、中間CA証明書が書いてあるのでコピーして保存

(4)証明書ファイル作成
  サーバ証明書、中間CA証明書、秘密鍵を1つにまとめたPKCS12形式ファイルを作成
 openssl pkcs12 -export -in [サーバ証明書ファイル] -inkey [秘密鍵] -certfile [中間CA証明書] -out [出力ファイル]

  PEM形式にしたい場合
  openssl pkcs12 -in [上記出力ファイル] -out [ファイル名.pem]

(5)Tomcat設定
   [Tomcat Dir]/conf/server.xml

   <Connector
       port="443"
       protocol="HTTP/1.1"
       scheme="https"
       secure="true"
       keystoreFile="[PKCS12形式のキーストアファイル]"
       keystorePass="[キーストアパスワード]"
       keystoreType="PKCS12"
   />

(6) 443ポート空け

(7)Tomcat再起動

2013年1月26日土曜日

[番外編] メールサーバ構築

■postfixによるSMTPサーバ(CentOS)
(1)インストール
   yum install postfix

(2)動作設定
    /etc/postfix/main.cf

設定項目 内容
ホスト名 myhostname = [自分のホスト名]
ドメイン名設定 mydomain = [自分のドメイン名]
メール送信先 myorigin = $myhostname
メール受信設定 inet_interfaces = all
メールの最終目的地 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
リレー許可ドメイン relay_domains = $mydestination
メール保存先 home_mailbox = Maildir/

(3)ポート設定
   25番ポート空ける

(4)alias設定
 postmaster, webmaster等の特別アカウントへのメールは通常rootに転送される
 これを本来のwebmasterユーザーで受信したい場合の設定

  /etc/aliases の以下の記述をコメントアウト
     webmaster: root

  newaliases コマンドで反映

(5)MTA(Message Transfer Agent)確認&切り替え
 複数のメール配信ソフトがインストールされている場合に行う。
  確認: alternatives --display mta
  変更: alternatives --config mta

(6)起動
   /etc/init.d/postfix start

■dovecotによるPOP3、IMAPサーバ構築
(1)インストール
   yum install dovecot

(2)動作設定
    /etc/dovecot/conf.d/10-main.cf
    /etc/dovecot/conf.d/auth-system.cf

(3)ポート設定
   110番ポート空ける

(4)起動
   /etc/init.d/dovecot start

2012年8月10日金曜日

ターミナル入力・・・・UART+MMU+割り込み(2)

続き。

■仮想メモリ割り当て
設計したメモリマップにしたがって固定のページテーブルを作成する


■割り込み初期化手順
(1)CPUのIRQ割り込みハンドラを登録
(2)CPUの割り込み有効化
 asm ("cpsie i"); でIRQ有効化

(3)UARTにクロック供給
(4)UARTのIRQハンドラを登録
(5)UARTのIRQ出力有効化
 受信割り込みのみ有効化する。
  OMAP3530仕様書の2693ページ 17.6.1 UART/IrDA/CIRレジスタ IER_REGを参照
  IER_REGに1(RHR_ITビット)を書き込み

■割り込みハンドラ
IRQハンドラだけ作成
IRQ以外の割り込みは使用しないのでnop
ハンドラではレジスタをスタックに保存してIRQ処理に飛ぶ

.extern interruptHandler
.global interruptVector

_irq_entry:
    stmfd sp!, {r0 - r12, lr};

    mov r0, #6;
    bl interruptHandler;

    ldmfd sp!, {r0 - r12, lr};
    subs pc, lr, #4;

interruptVector:
    nop;    // Reset
    nop;    // Invalid code
    nop;     // Software Service.
    nop;     // Prefetch Abort
    nop;    // Data Abort
    nop;
    ldr pc, =_irq_entry;
    nop;    // Fast IRQ

■UART割り込みハンドラ
 UARTドライバの割り込みハンドラでは割り込み時にRHRから1文字読み取ってバッファに記録

■サンプル
ソースコード

2012年6月4日月曜日

ターミナル入力・・・・UART+MMU+割り込み

UARTの制御と割り込みを使ってターミナルから文字列を入力してそれを表示してみる。

■実装方針
1、メモリマップ
 物理メモリのアドレス=仮想アドレスを基本とする。
BeagleBoardは物理メモリが0x8000 0000~0x8FFF FFFF の256Mbyte
割り込みベクタは上位ベクタ0xFFFF 0000が使えるように割り当てる。
ハードウェアレジスタは256M分のメモリの上位、すなわち0x90000000~に割り当て
コードとデータはオフセット0x400000~に配置。その下をスタックとする
 以上の方針によりメモリマップは以下のように設定


2、割り込み駆動
UARTへの入力はポーリングによってバッファの状態を確認するのではなく、割り込みで入力を検知する。
BeagleBoardの端子はUART3に接続なのでIRQ74に対応するハンドラを登録する。
OMAP35x Technical Reference Manual 10.3.2 Interrupt Request Linesを参照

■メイン処理
(1)UART入力バッファが空か確認
(2)読み込み可能フラグが立つまで無限ループ
 →IRQ74が発生したらフラグを立てる
(3)バッファから1文字読み込み
(4)読み込んだ文字をUART出力
(5)(1)に戻る