include("/var/www/html/litebox/index.php"); ?>
個人証明書を作成しましょう。
この個人証明書で電子メールの代表的な暗号化方式S/MIME(Secure MIME)を利用できるようになります。
PostfixのSSL化でもメールの暗号化は行われましたが、S/MIMEとは本質が違います。
メールサーバーのSSL化というのは、あくまでもメール経路の暗号化に過ぎません。
ですからユーザーからサーバー間は暗号化できますが、サーバーから相手サーバー、相手サーバーからメールの送信相手までの経路は暗号化されていなかったわけです。
これに対しS/MIMEの場合はメールそのものを添付ファイルまで含めて暗号化しますから、相手が復号するまでは完全に暗号化されています。
S/MIMEを利用できれば、”本文に関しては”メールサーバーのSSL化は必要ないと言えます。(でもSMTP-AUTHを暗号化するためにはSSL化は必要ですよ)
また暗号化だけでなく、メールに電子署名を付けることができるようになります。
これにより成りすましメールなどを撲滅できるわけです。
またこの個人証明書を利用して、サーバー側としてはクライアント認証が実装できるようになります。
クライアント認証とは、個人証明書を利用して認証を行うということです。
ユーザー認証ならばID&パスワードが漏れてしまえば誰でもアクセスできてしまいますし、IPアドレスやホスト名を利用したアクセス制限ではフレキシブルな認証はできません。
これに対しクライアント認証とは、個人証明書を持つ者のみアクセスできるようにする、という認証です。
では、作成準備に取りかかりましょう。
まずはopensslを編集します。
場所はC:\usr\ssl\binでしたね。
編集箇所は
[ usr_cert ] # nsCertType = client, email ↓ nsCertType = client, email |
と変更し、変更したファイルをopenssl-smime.cnfと別名にして保存します。
保存ディレクトリは一緒で構わないので、C:\usr\ssl\bin\openssl-smime.cnfとなりますね。
では、いよいよ証明書の作成作業です。
証明書を保存するディレクトリ、C:\usr\ssl\bin\smimeを作成しておいてください。
OpenSSL> req -new -keyout smime/mns_key.pem -out smime/mns_req.pem Generating a 1024 bit RSA private key ......++++++ ...........................++++++ writing new private key to 'mns_key.pem' Enter PEM pass phrase:個人証明書を利用するユーザーの秘密鍵パスワード Verifying - Enter PEM pass phrase:個人証明書を利用するユーザーの秘密鍵パスワード ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:JP(日本) State or Province Name (full name) [Berkshire]:Shizuoka(都道府県) Locality Name (eg, city) [Newbury]:Iwata(市町村) Organization Name (eg, company) [My Company Ltd]:Mizushima Network Service(組織名) Organizational Unit Name (eg, section) []:koko(所属) Common Name (eg, your name or your server's hostname) []:mizushima.ne.jp(クライアント認証を行うサーバーのドメイン) Email Address []:mns@mizushima.ne.jp(S/MIME暗号化で使用するメールアドレス) Please enter the following 'extra' attributes |
ここまでで個人証明書を利用するユーザーの秘密鍵と署名要求書(CSR)が作成されました。
秘密鍵 C:\usr\ssl\bin\smimel\mns_key.pem
署名要求書 C:\usr\ssl\bin\smime\mns_req.pem
引き続きCAに署名してもらい、証明書を作成します。
OpenSSL> ca -config openssl-smime.cnf -in smime/mns_req.pem -out smime/mns_cert.pem Using configuration from C:/usr/ssl/bin/openssl-smime.cnf Enter pass phrase for C:/usr/ssl/bin/private/cakey.pem:CA秘密鍵パスワード Check that the request matches the signature Signature ok Certificate Details: Serial Number: 5 (0x5) Validity Not Before: May 17 14:32:27 2006 GMT Not After : May 17 14:32:27 2007 GMT Subject: countryName = JP(証明書の内容が正しいか確認してください) stateOrProvinceName = Shizuoka organizationName = Mizushima Network Service organizationalUnitName = koko commonName = mizushima.ne.jp emailAddress = mns@mizushima.ne.jp X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Client, S/MIME Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: AC:90:9B:F9:A8:8F:DA:1E:31:A2:44:1F:A5:7B:AC:62:CC:31:94:17 X509v3 Authority Key Identifier: keyid:85:F0:5A:12:CA:39:78:DF:DD:EB:E4:59:C2:EB:CF:0C:CF:C5:90:87 DirName:/C=JP/ST=Shizuoka/L=Iwata/O=Mizushima Network Service/OU=koko/CN=mizushima.ne.jp/emailAddress=mns@mizushima.ne.jp serial:00 Certificate is to be certified until May 17 14:32:27 2007 GMT (365 days) 1 out of 1 certificate requests certified, commit? [y/n]y |
これで個人証明書の作成は完了です。
個人証明書 C:\usr\ssl\bin\smime\mns_cert.pem
作成は完了なのですが・・・実はこのままではクライアント側にインストールすることができません。
証明書と秘密鍵を1つにまとめてp12という形に変換してやる必要があります。
OpenSSL> pkcs12 -export -in smime/mns_cert.pem -inkey smime/mns_key.pem
-certfile cacert.pem -name mizushima.ne.jp -caname mizushima.ne.jp -out
smime/mns_cert.p12 Enter pass phrase for mns_key.pem:個人証明書を利用するユーザーの秘密鍵パスワード Enter Export Password:個人証明書インストール時のパスワード Verifying - Enter Export Password:個人証明書インストール時のパスワード |
これでやっとユーザーがインストールできる形になりました。
秘密鍵入り個人証明書 C:\usr\ssl\bin\smime\mns_cert.p12
あとはこれをなんらかの形でユーザーに渡して、インストール時のパスワードとともにインストールしてもらうだけです。
またクライアント認証を行うにはstoneに設定を追加していく必要があります。
お疲れ様でした。
include("/var/www/html/footer.php"); ?>