[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp: 2057] cannot get private key でTLSを使用できない



はじめまして。
安部と申します。

Postfix で TLS を利用したいのですが、うまく動作しません。
原因や対策をご存知の方、いらっしゃいますでしょうか。


■SMTP over TLS (ポート465) の場合

メーラ(Becky!)から送信しようとすると、

----
SSL/TLSでの接続中にエラーが発生しました。
コード:0x00002746 既存の接続はリモート ホストに強制的に切断されました。
----

と表示されます。

サーバ側のエラーログには

----
postfix/smtpd[3020]: initializing the server-side TLS engine
postfix/smtpd[3020]: warning: cannot get private key from file
  /etc/ssl/private/server.key
postfix/smtpd[3020]: cannot load RSA certificate and key data
postfix/smtpd[3020]: connect from [192.168.1.129]
postfix/smtpd[3020]: setting up TLS connection from [192.168.1.129]
postfix/master[2294]: warning: process /usr/libexec/postfix/smtpd
  pid 3020 killed by signal 11
postfix/master[2294]: warning: /usr/libexec/postfix/smtpd: bad command
  startup -- throttling
----
(一部改行を入れています)

と出ています。


■STARTTLS の場合

サーバにログインしてtelnetを行った場合です。

----
# telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 example.com ESMTP Postfix
EHLO [127.0.0.1]
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN CRAM-MD5 PLAIN DIGEST-MD5
250-AUTH=LOGIN CRAM-MD5 PLAIN DIGEST-MD5
250 8BITMIME
STARTTLS
454 TLS not available due to local problem
----

この場合のログは以下となります。

----
postfix/smtpd[2992]: initializing the server-side TLS engine
postfix/tlsmgr[2993]: open server TLS cache btree:/etc/postfix/smtpd_scache
postfix/tlsmgr[2993]: tlsmgr_srvr_cache_run_event: start TLS server
  session cache cleanup
postfix/smtpd[2992]: warning: cannot get private key from
  file /etc/ssl/private/server.key
postfix/smtpd[2992]: cannot load RSA certificate and key data
postfix/smtpd[2992]: connect from example.com[127.0.0.1]
----


どちらの場合も、秘密鍵の取得でエラーになっているようなのですが。。。


http://www.kobitosan.net/postfix/ML/arc.3/msg00146.html
http://www.kobitosan.net/postfix/ML/arc.2/msg00048.html

上記スレッドのように秘密鍵を暗号化しているわけではなく
PEM形式にもなっています。(のはず)
証明書、秘密鍵は Dovecot で指定して IMAPS が利用できています。


以下、環境や作業内容です。

■環境

OS: CentOS 4.3
kernel: 2.6.9-34.106.unsupported
  (http://ftp.riken.jp/Linux/centos/4.3/centosplus/i386/RPMS/)
Postfix: 2.2.10 + VDAパッチ(http://web.onda.com.br/nadal/)
OpenSSL: 0.9.7a


■Postfixコンパイル

make -f Makefile.init makefiles \
 "CCARGS= \
  -DHAS_MYSQL -I/usr/include/mysql \
  -DHAS_PCRE -I/usr/include/pcre \
  -DUSE_SASL_AUTH -I/usr/include/sasl \
  -DUSE_TLS \
 " "AUXLIBS= \
 -L/usr/lib -L/usr/lib/mysql \
 -lmysqlclient -lz -lm -lpcre -lsasl2 -lssl -lcrypto"

make


■main.cf

# postconf -n | grep tls
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_loglevel = 4
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_use_tls = yes


■master.cf

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
(その他省略)


■秘密鍵作成

openssl genrsa -des3 -out serverpass.key 1024
openssl rsa -in serverpass.key -out server.key


■CSR作成

openssl req -new -key server.key -out server.csr


■証明書作成(プライベートCAによる署名)

openssl ca -in server.csr -out server.pem
openssl x509 -in server.pem -out server.crt


■server.crt

-----BEGIN CERTIFICATE-----
MIIDzTCCAzagAwIBAgIBATANBgkqhkiG9w0BAQQFADCBljELMAkGA1UEBhMCSlAx
(snip)
pHCoxzLTsE0+HYIBu/5Ph20=
-----END CERTIFICATE-----


■server.key

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCmCxoejx4TxF55oekYlO/31afXj8n9MidIJRfFv8hNiHOTHCi8
(snip)
PFbcLTX5Uqp6E2gpm6yrH3GZSWYpbc4oUPsbWRdapJk=
-----END RSA PRIVATE KEY-----



証明書については
http://www.kobitosan.net/postfix/ML/arc.3/msg00164.html
にあるように

openssl req -new -x509 -nodes -days 365 -keyout postfix-key.pem \
  -out postfix.pem

として作成したものも使用してみたのですが、同じエラーでした。
/usr/share/ssl/misc/CA というスクリプトを使用して証明書を
作成してもだめでした。


秘密鍵のパーミッションは、root所有の 0400 でも大丈夫ですよね?
666 にしても同じエラーだったかと思います。


何か勘違いしていたり漏れたりしている部分があるのではないかと
思うのですが、どこが原因か全く分からない状況です。
何かご存知の方がいらっしゃいましたら、よろしくお願いいたします。
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list

Follow-Ups
[postfix-jp: 2058] Re: cannot get private key でTLSを使用できない, Katsushi Sakurane
[postfix-jp: 2060] Re: cannot get private key でTLSを使用できない, SATOH Fumiyasu

[検索ページ] [Postfix-JP ML Home]