.
Mailサーバー => SSL SMTPサーバー構築 > 4.クライアント認証を有効にする設定について
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

クライアント認証を有効にする設定について ~ Sendmail-8.12

クライアント認証を行うために必要な証明書の準備が出来ました。あとは、Sendmail の設定となります。

x509 CA署名型証明書 による STARTTLS 設定

クライアント認証に必要な証明書が全て揃ったので、Sednmailの設定を行います。sendmail.mcを修正します。赤字で示したファイルを指定することになります。

サーバー側 /etc/mail/
1. ./cert.pem サーバー証明書("12".の署名されCAから渡された証明書 )
2. ./cacert.pem CA証明書 7.の複製
3. ./privky.pem サーバープライベートキ
4. ./newreq.pem 証明書署名要求書(CSR) " 1 " が発行された段階で消去

クライアント(ユーザー)側 /etc/mail/users/
5. ./mail_korogi_key.pem ユーザープライベートキー
6. ./mail_korogi_req.pem ユーザー署名要求書(CSR)" 7 " が発行された段階で消去
7. ./mail_korogi_cert.pem CAが6を署名して出来たユーザー証明書
8. ./mail_korogi_cert.p12 " 7 "をpkcs12形式に変換したファイル(クライアント提出)

CA認証側 /var/ssl/CA/
10. ./cacert.pem ------- CA証明書
11. ./private/cakey.pem - CAプライベートキー
12. ./cert.pem ------ "4"CSR署名によって生成され
                  サーバー管理者に渡すサ-バ証明書


CA局ディレクトリ構成 /var/ssl/CA
13. ./certs --------------- 発行した証明書の保存ディレクトリ
14. ./newcerts ------------ 新規証明書ディレクトリ(自動生成)
15. ./private ------------- CAプライベートキー
16. ./crl ----------------- 証明書失効リスト(期限切れ証明書)

/usr/lib/sendmail-cf/cf/sendmail.mc を適当なエディタで開き、上記作成した証明書を指定します。

/etc/mail/sendmail.mc

dnl
dnl STARTTLS (TLS(SSL)) Support
dnl
dnl please make keys named certs.pem and privkey.pem in /etc/mail/certs.
dnl

define(`confCACERT_PATH', `/etc/mail/certs/')  --カレントディレクトリ
define(`confCACERT', `confCACERT_PATH/cacert.pem')  -----2
define(`confSERVER_CERT', `confCACERT_PATH/cert.pem')  ----1
define(`confSERVER_KEY', `confCACERT_PATH/privkey.pem')  -----3
define(`confCLIENT_CERT', `confCACERT_PATH/users/mail_korogi_cert.pem')
define(`confCLIENT_KEY', `confCACERT_PATH/users/mail_korogi_key.pem')

クライアント認証を行う場合はクライアントに関する上記2行を追加し指定します。

修正が終わったら、m4プリプロセッサで sendmail.cf を生成します。

# cd /usr/lib/sendmail-cf/cf
# sh Build sendmail.cf

Cmmon Nameには必ず、利用するサーバードメインを記入します。 ディレクトリ /etc/mail/certs/users に以下のファイルが生成されます。

生成されたsendmail.cfを /etc/mail/sendmail.cf と差し替えてSendmailを再起動して下さい。

ローカルユーザーの設定

作成したユーザー証明書を.p12を右クリックでインストールします。 続いてOutookのSMTPサーバーに関する設定を以下の様にします。

Outlook アカウントプロパティ

ここでローカルユーザーからOutlookでメールを配送してみます。ローカルユーザーについてはSMTPにつてい認証を行わないようにしているので、 メーラーの設定にsslにチェックをいれてメールを送ってみます。受け取った側のヘッダを確認すると以下のように記述されています。

送られたメールのヘッダ

Received: from sirius (MIKcd-02p147.ppp.odn.ad.jp [xxx.x.xxx.xxx]) (authenticated bits=0) by casper.magi (8.12.9/8.12.9) with ESMTP id h34GagAJ015879 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO)

verify=NOとなっているため、クライアント認証が行われていないことになりますが、プロバイダODNのメールサーバー まで暗号路により保護されてメールが届いたことがわかります。この状態では自己証明書を使った場合と変わりなく、暗号路は確保されている事が確認できました。

つまり、クライアント認証を行う必要がなく、SSLによる経路の暗号化が目的であることがほとんどですので、「自己証明型証明書によるSSL暗号路実現 ~ Sendmail-8.12」 で行う設定の方が楽です。ただし、この方法では次に説明するクライアント認証を行う事は出来ません。

クライアント認証を行うための設定

クライアント認証を有効にするには Sendmail のアクセス制限の設定を行う/etc/mail/access に以下の内容を追記します。

/etc/mail/access

CERTISSUER:/C=JP/ST=Aichi/L=Nagoya/O=Creative.Unit.ZERO/
 OU=Design/CN=mydomain.net/Email=korogi@mydomain.net RELAY

CERTSUBJECT:/C=JP/ST=Aichi/L=Nagoya/O=Creative.Unit.ZERO/
 OU=Design/CN=mail.mydomain.net/Email=korogi@mydomain.net RELAY

実際には1行ずつ、
CERTISSUER CERTSUBJECT で計2行です。

CERTISSUER 証明書を発行したCA、つまり署名したCAが一致すれば
CERTSUBJECT 証明書の所有者 クライアント証明書署名内容による制限を行います。

これらの値はユーザー証明書に記述されています。

/etc/mail/users/mail_korogi_cert.pem

Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=JP, ST=Aichi, L=Nagoya, O=Creative.Unit.ZERO, OU=Design, CN=mydomain.net/Email=korogi@mydomain.net
Validity
Not Before: Mar 31 14:08:49 2003 GMT
Not After : May 30 14:08:49 2022 GMT
Subject: C=JP, ST=Aichi, O=Creative.Unit.ZERO, OU=Design, CN=mail.mydomain.net/Email=korogi@mydomain.net
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:fb:91:17:07:3a:ed:16:ea:f0:28.12:31:2e:bc:
dc:4c:32:e2:83:0c:b8:27:e9:86:1d:41:90:5b:7b:

これらの", "(カンマスペース) を / に置き換えた値となります。accessファイルを編集したら必ず以下を行います。Sendmailは直接accessファイルを参照せず、access.dbを参照します。変更内容をaccess.dbに反映させます。

# sh makemaps hash /etc/mail/access < /etc/mail/access

実際に外部からメールのリレーを行うと以下のログが記録されます。

送られたメールヘッダの内容

Received: from sirius (MIKcd-02p147.ppp.odn.ad.jp [xxx.x.xxx.xxx]) (authenticated bits=0) by casper.magi (8.12.9/8.12.9) with ESMTP id h34GagAJ015879 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=YES)

クライアント認証が行われている事が確認できます。

クライアント認証の必要性について

このようにCA署名要求によって作成された証明書を用いれば、クライアント認証が可能となります。これらの証明書を持つユーザーにSMTPの利用を認めた 場合、証明書が誤って人手に渡るとSPAMの餌食となることは言うまでもありません。

このような利用方法は管理者本人に留めるべきです。通常は SMTP AUTHによる認証を暗号路で保護されていれば十分なのでクライアント認証の必要性はないと思います。

bottom_mark
ページ最上部
ページ最上部 前のページ