OpenAS2 導入・設定ガイド
はじめに
本書は、OpenAS2サーバーの導入から運用までを網羅した技術ガイドです。OpenAS2は、企業間の安全なEDI(電子データ交換)ドキュメント伝送を実現するオープンソースのAS2(Applicability Statement 2)サーバー実装です。
AS2プロトコルはHTTP/HTTPSを基盤とし、データ暗号化、デジタル署名、メッセージ確認機能を提供します。ここでは、バージョン3.11.0に基づいた設定手順を詳述します。
主な機能
- HTTP/HTTPSプロトコル対応
- データ暗号化とデジタル署名
- MDN(Message Disposition Notification)確認
- ディレクトリポーリングによる自動送信
- 柔軟なパートナー設定
- 詳細なログ記録と監視機能
システム要件
ハードウェア要件
- CPU: デュアルコア2GHz以上
- メモリ: 最小2GB、推奨4GB以上
- ディスク容量: 最小1GBの空き領域
ソフトウェア要件
- Javaランタイム環境 (JRE) 11以降
- Windows/Linux/Unix OS
- ネットワーク接続(パートナーとの通信に必要)
インストール手順
1. 基本インストール
- インストールパックの展開
OpenAS2Server-3.11.0.zipを目的ディレクトリに展開
例: C:\OpenAS2Server-3.11.0
- ディレクトリ構成の説明
OpenAS2Server-3.11.0/
├── bin/ # 実行可能ファイルとスクリプト
├── config/ # 設定ファイル
├── data/ # データディレクトリ(受信・送信ファイル)
├── lib/ # 依存ライブラリ
├── logs/ # ログファイル
└── resources/ # リソースファイル
2. サービスの起動
Windowsシステム:
cd bin
start-openas2.bat
Linux/Unixシステム:
cd bin
./start-openas2.sh
3. インストールの確認
- ログファイル
logs/log-YYYYMMDD.txtを確認 - サービスが正常起動し、エラーがないことを確認
- デフォルトHTTPポート: 10080
- デフォルトHTTPSポート: 10443
設定ファイルの詳細
1. config.xml - メイン設定ファイル
主な設定項目の説明:
証明書設定
<certificates>
<certificate classname="org.openas2.cert.PKCS12CertificateFactory"
filename="%home%/mycompany.p12"
password="securePass123"
interval="300000"/>
</certificates>
HTTP/HTTPS受信モジュール
<module classname="org.openas2.processor.receiver.AS2ReceiverModule"
port="10080"
errordir="%home%/data/inbox/error"
errorformat="sender.as2_id, header.message-id, $date.yyyy-MM-dd-HH-mm-ss$"/>
ディレクトリポーリングモジュール
<module classname="org.openas2.processor.sender.AS2DirectoryPollingModule"
outboxdir="%home%/data/toPartnerCorp"
errordir="%home%/data/toPartnerCorp/error"
sentdir="%home%/data/mycompany-PartnerCorp/sent"
interval="10000">
<defaults>
<attribute name="sender.as2_id" value="mycompany"/>
<attribute name="receiver.as2_id" value="PartnerCorp"/>
</defaults>
</module>
2. partnerships.xml - パートナー設定
パートナー定義
<partner name="PartnerCorp"
as2_id="PartnerCorp"
x509_alias="PartnerCorp"
email="partner@partnercorp.com"/>
パートナーシップ設定
<partnership name="mycompany-to-PartnerCorp">
<sender name="mycompany"/>
<receiver name="PartnerCorp"/>
<attribute name="protocol.as2" value=""/>
<attribute name="content_transfer_encoding" value="binary"/>
<attribute name="subject" value="AS2 Message from mycompany to PartnerCorp"/>
<attribute name="as2_url" value="https://partner.example.com:10443/as2"/>
<attribute name="as2_mdn_to" value="https://myserver.example.com:10443/as2"/>
<attribute name="encrypt" value="aes256"/>
<attribute name="sign" value="sha256"/>
<attribute name="as2_mdn_options" value="signed-receipt-protocol=optional,pkcs7-signature; signed-receipt-micalg=optional,sha256"/>
</partnership>
3. messages.xml - メッセージ形式設定
メッセージの形式と保存ルールを定義:
<messages>
<format classname="org.openas2.message.AS2Message"
messageid="$rand.0987654321abcdefghijklmnopqrstuvwxyz$-$date.ddMMyyyyHHmmssZ$@$msg.sender.as2_id$_$msg.receiver.as2_id$"/>
</messages>
パートナー管理
1. 新規パートナーの追加
ステップ1: partnerships.xmlにパートナーを追加
<partner name="NewPartner"
as2_id="NewPartner"
x509_alias="NewPartner"
email="newpartner@newpartner.com"/>
ステップ2: パートナーシップを設定
<partnership name="mycompany-to-NewPartner">
<sender name="mycompany"/>
<receiver name="NewPartner"/>
<!-- その他設定属性 -->
</partnership>
ステップ3: ディレクトリ構造の作成
data/
├── outbox/NewPartner/ # 送信ファイルディレクトリ
├── mycompany-NewPartner/
│ ├── sent/ # 送信済みファイルアーカイブ
│ └── mdn/ # MDNレシート保存
└── inbox/NewPartner/ # 受信ファイルディレクトリ
2. 証明書の設定
パートナーの公開鍵証明書のインポート:
cd bin
./import_public_cert.sh NewPartner /path/to/newpartner_public.cer
自社の鍵ペアの生成:
cd bin
./gen_p12_key_par.sh mycompany securePassword
ファイル転送
1. ファイルの送信
方法1: outboxディレクトリの使用(推奨)
- 送信するファイルを
data/outbox/PartnerName/ディレクトリに配置 - システムが自動的にファイルを検出して送信
- 送信成功後、ファイルは対応するsentディレクトリに移動
方法2: 専用ポーリングディレクトリの使用
- ファイルを設定されたポーリングディレクトリ(例:
data/toPartnerCorp/)に配置 - システムが設定された間隔でファイルを検出して送信
- 成功時はsentディレクトリに移動、失敗時はerrorディレクトリに移動
2. ファイルの受信
- 自動受信: パートナーから送信されたファイルは自動的に
data/inbox/PartnerName/ディレクトリに保存 - MDN確認: システムが自動的にMDNレシートを送信してファイル受信を確認
- エラー処理: 受信に失敗したファイルは
data/inbox/error/ディレクトリに保存
3. ファイル処理フロー
送信フロー:
ファイルをoutboxに配置 → システム検出 → 暗号化・署名 → HTTP/HTTPS送信 → MDN受信 → sentディレクトリに移動
受信フロー:
HTTPリクエスト受信 → 署名検証 → 復号 → inboxに保存 → MDN確認送信
証明書管理
1. 証明書の種類
- 秘密鍵証明書: 署名と復号に使用(.p12形式)
- 公開鍵証明書: 検証と暗号化に使用(.cer形式)
- SSL証明書: HTTPS通信に使用(.jks形式)
2. 証明書操作
証明書情報の確認
keytool -list -keystore config/as2_certs.p12 -storetype PKCS12
パートナー証明書のインポート
cd bin
./import_public_cert.sh PartnerAlias /path/to/partner_cert.cer
公開鍵証明書のエクスポート
keytool -export -alias mycompany -keystore config/as2_certs.p12 -storetype PKCS12 -file mycompany_public.cer
3. 証明書設定の確認
partnerships.xmlのx509_aliasが証明書ストアのエイリアスと一致していることを確認:
<partner name="PartnerCorp" x509_alias="PartnerCorp"/>
監視とログ
1. ログファイル
- メインログ:
logs/log-YYYYMMDD.txt - エラーログ: メインログに含まれる、ERRORレベルのメッセージ
- デバッグログ: 設定により詳細なデバッグ情報を有効化可能
2. 主要なログ情報
送信成功
INFO [AS2SenderModule] Message sent successfully to PartnerCorp
INFO [MDNSenderModule] MDN received from PartnerCorp
送信失敗
ERROR [AS2SenderModule] Failed to send message to PartnerCorp: Connection timeout
ERROR [AS2DirectoryPollingModule] File moved to error directory
受信成功
INFO [AS2ReceiverModule] Message received from NewPartner
INFO [AS2ReceiverModule] File saved to inbox/NewPartner/
3. 監視のポイント
- errorディレクトリの失敗ファイルを確認
- ログのERRORとWARNメッセージを監視
- MDNレシートの受信状況を確認
- 証明書の有効期限を確認
トラブルシューティング
1. 一般的な問題
接続タイムアウト
症状: Connection timeoutエラー 解決策:
- ネットワーク接続を確認
- パートナーURLが正しいか確認
- ファイアウォール設定を確認
証明書エラー
症状: Certificate validation failed 解決策:
- 証明書が期限切れでないか確認
- 証明書エイリアス設定を確認
- 証明書形式が正しいか確認
ファイルが送信されない
症状: ファイルをoutboxに配置しても処理されない 解決策:
- ディレクトリポーリング設定を確認
- パートナーシップ設定を確認
- ログのエラーメッセージを確認
2. デバッグ手順
- 詳細ログの有効化
<logger name="org.openas2" level="DEBUG"/>
- 設定ファイル構文の確認
- XML形式の正確性を検証
- 必須属性が完全か確認
- ネットワーク接続のテスト
telnet partner-server.com 10443
- 証明書の検証
openssl x509 -in certificate.cer -text -noout
3. パフォーマンス最適化
- ポーリング間隔(intervalパラメータ)を調整
- JVMメモリ設定を最適化
- 非同期処理モードを使用
- 定期的にログと一時ファイルをクリーンアップ
ベストプラクティス
1. セキュリティ設定
- 証明書を保護するための強力なパスワードを使用
- 定期的に証明書を更新
- HTTPS転送を有効化
- ネットワークアクセス権を制限
2. 運用管理
- 定期的に設定ファイルと証明書をバックアップ
- ディスク使用量を監視
- ログローテーションポリシーを設定
- フォールトリカバリプロセスを確立
3. パフォーマンスチューニング
- 業務量に応じてポーリング間隔を調整
- JVMパラメータ設定を最適化
- SSDストレージを使用してI/O性能を向上
- スレッドプールサイズを適切に設定
4. テストの推奨事項
- 本番環境での十分なテスト
- 小さなファイルで接続性をテスト
- 各種エラーシナリオの処理を検証
- 証明書期限切れなどの異常状況をテスト
付録
A. 設定パラメータ参照
| パラメータ名 | 説明 | デフォルト値 | 例 |
|---|---|---|---|
| port | HTTPリスニングポート | 10080 | 8080 |
| ssl_port | HTTPSリスニングポート | 10443 | 8443 |
| interval | ポーリング間隔(ミリ秒) | 5000 | 10000 |
| encrypt | 暗号化アルゴリズム | 3des | aes256 |
| sign | 署名アルゴリズム | sha1 | sha256 |
B. エラーコード説明
| エラーコード | 説明 | 解決策 |
|---|---|---|
| AS2-001 | 証明書検証失敗 | 証明書設定を確認 |
| AS2-002 | ネットワーク接続タイムアウト | ネットワーク設定を確認 |
| AS2-003 | ファイル形式エラー | ファイルの整合性を検証 |
C. サポートされる暗号化アルゴリズム
- 対称暗号化: 3DES, AES128, AES192, AES256
- 非対称暗号化: RSA
- ハッシュアルゴリズム: SHA1, SHA256, SHA512
- 署名アルゴリズム: RSA-SHA1, RSA-SHA256
バージョン: OpenAS2 Server 3.11.0 更新日: 2025年 ドキュメントバージョン: 1.0