⇤ ← 2017-10-16 23:39:05時点のリビジョン1
サイズ: 3593
コメント:
|
サイズ: 4012
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 22: | 行 22: |
== 事前インストール == * ports/security/ca_root_nss をインストールすること。 |
|
行 47: | 行 50: |
define(`confCERT_FINGERPRINT_ALGORITHM', `sha256')dnl | |
行 70: | 行 72: |
== ルートCA証明書の展開 == /etc/mail/certs ディレクトリ以下に ports/security/ca_root_nss でインストールされた /usr/local/share/certs/ca-root-nss.crt より1証明書毎にファイルを作成(分解)して、{{{openssl x509 -noout -hash -fingerprint}}} を通した結果をファイル名(拡張子は .0)を作成する。 |
SSL/TLSサーバーベストプラクティクス
目次
想定環境
- FreeBSD 11.1-R
sendmail v8.15.2
目的
昨今メールのSMTP(プロトコル)における暗号通信(SSL/TLS)のry。
+--------+ SMTP +------+ SMTP +------+ SMTP +------+ SMTP等 +------+ IMAP/POP3等 +--------+ |メーラー| →→ |MSA| →→ |MTA| →→ |MTA| →→→ |MDA| →→→→→ |メーラー| +--------+ +------+ +------+ +------+ +------+ +--------+
目標
High-Tech Bridge SSL/TLS Server Test で「A」評価を得る。
- 「A+」が取れないのは以下の点で sendmail の実装に問題がある(実装されてない)ため。
- CLIENT-INITIATED SECURE RENEGOTIATION
- OCSP Stapling
事前インストール
- ports/security/ca_root_nss をインストールすること。
再コンパイル
現時点OS標準(stock sendmail, 11.1-R)および ports/mail/sendmail(ports sendmail, 8.15.2_3)ともに 8.15.1 で導入された _FFR_TLS_USE_CERTIFICATE_CHAIN_FILE コンパイルオプションが有効になっていない。
- stock sendmail では /etc/make.conf に以下の設定を行い make world を実施する。
.if ${.CURDIR} == "/usr/src/usr.sbin/sendmail" CFLAGS+= -D_FFR_TLS_EC -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE .endif
- なお stock sendmail は標準でECDHEサポートが無効になっている(_FFR_TLS_EC コンパイルオプション、8.14.8 で導入)こともあり、合わせて付けておく。
ソースコード直接修正する場合は /usr/src/usr.sbin/sendmail/Makefile の CFLAGS+= -DSTARTTLS -D_FFR_TLS_1 行を CFLAGS+= -DSTARTTLS -D_FFR_TLS_EC -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE に変える。
ports sendmail では /usr/ports/mail/sendmail/files/site.config.m4.tls ファイルを編集して -D_FFR_TLS_EC の後ろに -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE を加えた後、make install を実施する。
APPENDDEF(`conf_sendmail_ENVDEF', `-DSTARTTLS -D_FFR_TLS_EC -D_FFR_TLS_USE_CERTIFICATE_CHAIN_FILE') APPENDDEF(`conf_sendmail_LIBS', `-lssl -lcrypto')
sendmail.mc
define(`confSERVER_CERT', `/usr/local/etc/dehydrated/certs/mail.example.jp/fullchain.pem')dnl define(`confSERVER_KEY', `/usr/local/etc/dehydrated/certs/mail.example.jp/privkey.pem')dnl define(`confSERVER_SSL_OPTIONS', `SSL_OP_NO_SSLv3,SSL_OP_NO_TLSv1,SSL_OP_CIPHER_SERVER_PREFERENCE')dnl define(`confCACERT', `/usr/local/etc/dehydrated/certs/mail.example.jp/chain.pem')dnl define(`confCACERT_PATH', `CERT_DIR')dnl define(`confCIPHER_LIST', `ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA')dnl define(`confDH_PARAMETERS', `CERT_DIR/dh.param')dnl
/etc/rc.conf
以下の設定を追加する。
sendmail_cert_create="NO"
作成済みファイルの削除
sendmail_cert_create="YES" (デフォルト)によって既に作成済みのSSLサーバー証明書関連のファイルを削除する。
rm -f /etc/mail/certs/host.cert /etc/mail/certs/host.key rm -f /etc/mail/certs/cacert.pem /etc/mail/certs/*.0
DHパラメータの生成
openssl dhparam -out /etc/mail/certs/dh.param 2048
ルートCA証明書の展開
/etc/mail/certs ディレクトリ以下に ports/security/ca_root_nss でインストールされた /usr/local/share/certs/ca-root-nss.crt より1証明書毎にファイルを作成(分解)して、openssl x509 -noout -hash -fingerprint を通した結果をファイル名(拡張子は .0)を作成する。