- PR -

S/MIMEを独自に構築する方法

1
投稿者投稿内容
やまもと
常連さん
会議室デビュー日: 2003/08/14
投稿数: 26
お住まい・勤務地: JAPAN
投稿日時: 2004-02-17 16:38
WEBサーバー上のお問合せフォームより、送信されたものを
送信時にサーバー側でテキストの内容を暗号化して外部の
クライアントのメーラーで受信したいのですが、PGPでなく、
S/MIMEで構築中です。商用なのですが、お金をかけたく
ないので、SSLのように独自の認証局(サーバー)からクライ
アントにサーバーキーを発行しようと模索中です。べりサイン
や主要なプロバイダで行っていると思いますが、(2000円程度)
これを自らのサーバーで独自に解決したいと思っていますです。

■サーバーに必要な環境(必要な設定/必要なアプリケーション)
■クライアント用の設定と独自の認証キーを作成する為の
 アプリケーションについて。

ほんの些細な除情報でもかまいませんのでお教えいただけますと
幸いでございます。





[ メッセージ編集済み 編集者: やまもと 編集日時 2004-02-17 16:57 ]
ポン太
会議室デビュー日: 2002/06/14
投稿数: 5
投稿日時: 2004-02-18 11:07
サーバ側で必要なアプリケーションはOpenSSLのみです。
#Solarisの場合は/dev/randomが別途必要です。

OpenSSLを構築した後、証明書を発行します。
OpenSSLの証明書はデフォルトではPEM方式(形式?)の証明書のため、
そのままクライアントPCに持っていってもインポートできないため
PKCS#12形式に変換します。
PKCS#12形式に変換した証明書をFD等でクライアントPCに持っていき
メーラーに証明書をインポートします。

メーラーにOutlook ExpressやNetscapeのメーラーを使っているのなら
特にほかに用意することなくインポートすることができます。
Beckyを使用の場合は、S/MIMEプラグインがあるのでそれを入手する
必要があります。

テキストの内容を暗号化するときは
openssl smime -encrypt -in xxxxx
コマンドで暗号化されます。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-02-18 13:14
クライアント側:
1. 自分のキーペアおよび証明書を作成または購入し、インストールする。

サーバ側:
2. クライアントの公開鍵をインポートする。
3. ベリサイン等から購入したpublicクラスのクライアント証明書 (秘密鍵付) をインポートする。

1 のクライアント証明書はサーバがデータを暗号化するために使用するもので、OpenSSL があれば作成できます。(OpenSSL は cygwin がなくても Windows にインストール可)

3 は送信するメールデータ署名をつけるために必要です。こちらは社内など、身内で使用する場合を除いて、第三の認証局から発行してもらう必要があります。

あと、メールを送る時にどのユーザに送るかを検知し、相手によって証明書を選択する機能、メールデータを暗号化して送る機能が必要となると思われます。

また、新規顧客に対して作成してもらった証明書をサーバ側に登録する必要も検討しなければならないかと思います。

セキュリティの専門家ではないので間違っているところがあるかもしれませんが、その時はご指摘いただければ幸いです。
やまもと
常連さん
会議室デビュー日: 2003/08/14
投稿数: 26
お住まい・勤務地: JAPAN
投稿日時: 2004-02-18 15:26
ご教授本当にありがとうございます。

クライアント側はオープンSSLで独自の認証局を作って、
証明書を発行してあげれば良かったのですね。
あまりにも勉強不足な状態で質問したようで、すいません。

その後少々勉強しまして自分のわからないところを再度
確認と質問させてください。
※サーバー側の設定でまだ悩んどります。

今回構築中の要件はCGIのフォームからお客さまが入力した
問合せや個人情報を「送信」ボタンを押して送信する際、
暗号化して管理者(クライアント)に送信するといった
内容になります。フォーム自体はベリサイン認証のSSLを
設置済みです。
(Apache+mod_ssl/OSはコバルトかRedhat)

そこから先が問題なのです。

1、フォームから内容が「送信」される際に、どうやって
  暗号化するのかというロジックが分からないです。
  CGIなんですが・・・。
  ※いろいろ検索しているのですが、良い資料がなくて
   泣いてます。

2、クライアント用の認証キーを発行した後、その情報を
  サーバー内のどこにどうやってインポートするんで
  しょうか?
  ※今回メールを受ける管理者(クライアント)はすべて
   社内の人間ですので、独自の認証局で発行します。

それから、できればいいなぁ・・!と思っていた機能がありまして、
それが「あんとれ様」にご記入いただきましたユーザー振り分け
機能なのですが、
>>メールを送る時にどのユーザに送るかを検知し、
>>相手によって証明書を選択する機能
>>メールデータを暗号化して送る機能
こんなことどうやれば実現できるのでしょうか??
ちなみに今回はメールを受けるクライアントはすべて暗号化された
もの受けるようにしたいのですが、ただ、グループ(部署)が10個
くらいに分かれてまして、このグループあての場合は
このユーザー(複数人)に、この部署にはこのユーザー(複数人)に
といった形で、暗号化されたメールをそれぞれの認証ユーザーごとに
振り分けたいのですが・・・。

何卒お力添えをお願い申し上げます。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-02-18 17:10
1. SSL 通信について。セッション開始時にサーバ側の証明書が渡され、その証明書についている公開鍵を使ってクライアントが生成した共通鍵をサーバ側に送ります。あとはその共通鍵を使って秘密鍵暗号方式で双方向の通信内容が暗号化されます。

2. S/MIME では、クライアントからサーバに対してメールを送信した時に、クライアントの公開鍵もいっしょに送られます。また、クライアント証明書でクライアント認証をやった時にも送られます。ただ、それをどうやって取り出すかは・・・。
1

スキルアップ/キャリアアップ(JOB@IT)