qmail などの tcpserver をSSL 対応に設定する 2048bit 対応
グローバルサインは最近SSLの暗号化キーの鍵長が RSA 2048bit 以上の長さが必要になりました。
強固な暗号通信の為だと思いますが、今まで1024 bit で作業していたので鍵の作り直しが必要になります。
そんな 2048bit 対応の SSL 化についてまとめてみました。
1024 bit も少し改変すれば対応出来ますので、1024 bit でお作りになられたい方もどうぞ。
基本的に第三者認証をすることを前提に作業しています。
また、ここでの前提条件はtcpserverを使って正常にサービスが実行されていることを前提とされています。
もちろんtcpserverで実行されるサービスは qmail に限定されてはおりません。
tcpserver を使う限りどのようなサービスでも同様の 設定で動作可能です。
qmail などの設定などは時間があったら書きたいなと。
tcpserver の SSL 対応化
最初の作業はtcpserverをSSL対応にすることです。
通常tcpserverはソースひー土で取得したときはSSLには対応しておりません。
それをまずはSSL対応のパッチを当ててSSLに対応させる必要があります。
■ tcpserver (ucspi-tcp)のソースコードダウンロード先
https://cr.yp.to/ucspi-tcp.html
■tcpserver SSLパッチダウンロード先
https://www.nrg4u.com/
パッケージは次の物がダウンロードされるはです。
ucspi-tcp-0.88.tar.gz
ucspi-tcp-ssl-20020705.patch.gz
展開、パッチを当てます。
# tar xvfz ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88 # zcat ../ucspi-tcp-ssl-20020705.patch.gz | patch # make |
これで、SSL対応の tcpserver ができあがりましたので。
それでは、SSL対応化の鍵ファイルを作っていきます。
手順1 SSL作業用ディレクトリを作る
まずは、ファイルを作られるため作業用ディレクトリなどを作ってそれをカレントディレクトリとしておきます。
手順2 秘密鍵を作る
# genrsa -out private.key 2048 Generating RSA private key, 2048 bit long modulus .........+++ .....................................................................................................................................+++ e is 65537 (0x10001) |
これでprivate.keyというファイルの秘密鍵を作りました。 genrsa -out private.key 1024 に変えることで 1024bit長の秘密鍵を作る事が出来ます。
手順3 認証用CSRを作る
# openssl req -new -key private.key -out csr.pem 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) [AU]:JP (国名) State or Province Name (full name) [Some-State]:都道府県名 Locality Name (eg, city) []:市町村名 Organization Name (eg, company) [Internet Widgits Pty Ltd]:企業名 個人の場合はPersonalなど Organizational Unit Name (eg, section) []:部署名 Common Name (eg, YOUR name) []:メールサーバーなどtcpserverのおかれるサーバー名 Email Address []: |
これで、csr.pem (認証申請書CSR)が作られます。
手順4 申請用CSRを表示して申請を行う
# cat csr.pem -----BEGIN CERTIFICATE----- ~ 中略 ~ -----END CERTIFICATE----- |
という内容が表示されたと思います。
こちらをSSL認証局などに提出して認証を受けます。
手順5 SSL認証用鍵ファイルの生成
tcpserver では、秘密鍵と公開鍵とをそれぞれ別々に呼び出すことは出来ない。
そのため、SSLで暗号化する鍵ファイルを生成する必要があります。
といっても、至って簡単でそれぞれのファイルを一つのファイルに連結するだけで作る事が出来ます。
まずは、認証局から承認された証明書を public.key として保存します。
その後下記の手順で鍵ファイル を生成します。
# cat ./private.key > cert.pem # echo "" >> cert.pem # cat ./public.key >> cert.pem |
これで、鍵ファイル cert.pem が生成されました。
1行目で、cert.pem の内容を private.key を書き込み、2行目で空白の行を追加。
3行目で、証明書を追加する。
というファイルになっています。
これでtcpserverで読み込み可能なSSL鍵ファイルが完成しました。
手順6 tcpserverにcert.pem(鍵ファイル)を読み込ませる
tcpserver の指定方法ですがサンプルとして vpopmail での pop3 を tcpserver で稼働させているとします。
通常のPOP3 (ポート110) でのコマンドは下記です。
/usr/local/bin/tcpserver -l 0 -R -H -v \ -u"81" -g"81" 0 110 \ /var/qmail/bin/qmail-popup [ホスト名] \ /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>& |
上記の起動コマンドを下記のようにSSL対応に書き換えます。
/usr/local/bin/tcpserver -l 0 -R -H -v -s \ -u"81" -g"81" \ -n /var/qmail/certs/cert.pem \ /var/qmail/bin/qmail-popup mail.intergear.net 0 995 \ /home/vpopmail/bin/vchkpw \ /var/qmail/bin/qmail-pop3d Maildir 2>&1 |
書き換えた内容が上記です。
出来るだけシンプルにするためcdbなどの読み込みなどはしておりませんので必要に応じて変更は必要になります。
増えた記述は下記です。
- -s : SSL通信であることを指定するオプション tcpserver にSSL パッチを当てないと動作しません。
- -n : 鍵ファイル (cert.pem ) までのパスを記述します。
- ポート番号 : 110 から POP3Sの標準ポートである 995 へ変更しました。
書き換えのポイントは以上です。
最後にサービスのリスタートをしてメーラーなどを使って証明書のエラーなどが出なければOKです。
メーラーによってはそういったエラーを出力しない物などあります。
Outlook などは証明書エラーがあればかならず表示されますので、一度は試して見るのが良いと思います。
関連のありそうなエントリ