bouncycastleを使用した電子署名つきメールの送信サンプルの使用方法¶
本章では、bouncycastle [1]を使用した電子署名付きメール送信機能の使用方法を解説する。 なお、本機能はサンプル実装のため、導入プロジェクトで使用する際には、ソースコード(プロダクション、テストコード共に)をプロジェクトに取込使用すること。
[1] | bouncycastleとは、暗号化等のセキュリティ関連の機能を提供するオープンソースライブラリである。 詳細は、bouncycastleのサイト(https://www.bouncycastle.org/)を参照 |
環境準備¶
ライブラリの準備
以下をpom.xmlに追加する。
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcjmail-jdk18on</artifactId> <version>1.78.1</version> </dependency>補足
本機能のテストでは、Release1.78.1のライブラリを使用してテストを行なっている。
バグフィックスや脆弱性対応などが行われる可能性があるため、bouncycastleのサイトで最新リリースの有無を必ず確認すること。 もし、1.78.1以降のバージョンがリリースされている場合には、最新バージョンのライブラリをプロジェクトに適用すること。
電子署名用の証明書の準備
証明書は、認証局から発行してもらい任意のディレクトリ(メール送信機能(バッチ)からアクセス可能なディレクトリ)に配置すること。 このディレクトリへのアクセス権限は必要最小限にし、必要のないユーザが証明書にアクセスできないようにすることを推奨する。
電子署名付きメール送信機能の構造¶
本機能は、Nablarchアプリケーションフレームワークで提供されるメール送信機能(nablarch.common.mail.MailSender)の拡張機能である。
送信対象のメール送信パターンIDを元に証明書を特定し、電子署名を付加する仕様としている。 このため、本機能を使用する場合には、必ずメール送信パターンIDを使用できるテーブル設計とすること。
詳細は、メール送信機能 を参照すること。
設定ファイルの準備¶
本機能を使用する際に必要となる設定は、証明書に関する設定を除き全てNablarchアプリケーションフレームワークのメール送信機能と同じである。 このため、Nablarchアプリケーションフレームワークのメール送信機能のガイドを参照し、設定ファイルの準備をすること。
証明書に関する設定方法¶
本機能を使用する際に必要となる証明書に関する設定方法を、設定例を元に解説する。
<!-- 証明書へアクセスするための設定 -->
<!--
証明書へのアクセス設定は証明書のファイル単位で設定を行う。
この例では、証明書ファイルが2ファイルある場合を例にした設定としている。
name属性:任意の名前(証明書ファイルを識別出来る名前)を設定する。
class属性:please.change.me.common.mail.smime.CertificateWrapperを固定で設定する。
-->
<component name="certificate_1" class="please.change.me.common.mail.smime.CertificateWrapper">
<!-- 証明書ファイルへアクセスするためのパスワードを設定する。 -->
<property name="password" value="password" />
<!-- 証明書に格納された秘密鍵にアクセスするためのパスワードを設定する。 -->
<property name="keyPassword" value="password" />
<!-- 証明書ファイルのパスを設定する。 -->
<property name="certificateFileName" value="classpath:please/change/me/common/mail/smime/data/certificate_1.p12" />
<!-- 証明書のキーストアタイプを設定する。 -->
<property name="keyStoreType" value="PKCS12" />
</component>
<component name="certificate_2" class="please.change.me.common.mail.smime.CertificateWrapper">
<property name="password" value="keystorePass" />
<property name="keyPassword" value="testAliasPass" />
<property name="certificateFileName" value="classpath:please/change/me/common/mail/smime/data/certificate_2.p12" />
<property name="keyStoreType" value="JKS" />
</component>
<!-- 電子署名付きメール送信機能用に証明書リストを設定 -->
<map name="certificateList">
<!-- メール送信パターンID:01は、certificate_1で設定された証明書を使用して電子署名を付加する。 -->
<entry key="01" value-name="certificate_1" />
<!-- メール送信パターンID:02は、certificate_2で設定された証明書を使用して電子署名を付加する。 -->
<entry key="02" value-name="certificate_2" />
</map>
実行方法¶
実行対象のアクションクラスを、please.change.me.common.mail.smime.SMIMESignedMailSenderとしてメール送信のバッチプロセスを起動する。 プロセス起動時には、このプロセスが処理すべきメールが特定できるメール送信パターンIDを引数として指定する。
詳細は、Nablarchアプリケーションフレームワークのメール送信機能のガイドを参照すること。