カスタムの自己署名 SSL 証明書を生成して Postfix に適用するにはどうすればよいですか。

Created:

2016-11-16 13:14:04 UTC

Modified:

2017-07-07 09:23:45 UTC

10

Was this article helpful?


Have more questions?

リクエストを送信

カスタムの自己署名 SSL 証明書を生成して Postfix に適用するにはどうすればよいですか。

質問

カスタムの自己署名 SSL 証明書を生成して Postfix に適用するにはどうすればよいですか。

回答

  1. root 秘密鍵を作成します。

    # openssl genrsa -out rootCA.key 2048
  2. この秘密鍵のパーミッションを 400 に変更します。

    # chmod 400 /usr/share/ssl/certs/postfix/rootCA.key
  3. 自己署名 root 証明書を作成します。

    # openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem

    以下のデータを使用します(必要な情報に変更します)。

    Country Name (2 letter code) [AU]:XX
    State or Province Name (full name) [Some-State]:SomeState
    Locality Name (eg, city) []:SomeCity
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company Co
    Organizational Unit Name (eg, section) []:Company Co
    Common Name (e.g. server FQDN or YOUR name) []:domain.tld
    Email Address []:admin@domain.tld
  4. 最終証明書用の秘密鍵を作成します。

    # openssl genrsa -out device.key 2048
  5. 証明書署名リクエストを作成します。

    # openssl req -new -key device.key -out device.csr
  6. 最後に、root CA 証明書と root 秘密鍵に基づいてサーバ証明書を作成します。

    # openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500
  7. Postfix の構成 /etc/postfix/main.cf を変更して、新たに作成した証明書を使用するようにします。

    #smtpd_tls_key_file = /etc/postfix/postfix_default.pem
    #smtpd_tls_cert_file = /etc/postfix/postfix_default.pem
    #smtpd_tls_CAfile = /etc/postfix/postfix_default.pem
    smtpd_tls_key_file = /usr/share/ssl/certs/postfix/device.key
    smtpd_tls_cert_file = /usr/share/ssl/certs/postfix/device.crt
    smtpd_tls_CAfile = /usr/share/ssl/certs/postfix/rootCA.pem
  8. Postfix サービスを再起動します。

    [root@centos ~]# service postfix restart
    Shutting down postfix: [ OK ]
    Starting postfix: [ OK ]

新たに生成されるファイルはすべて /usr/share/ssl/certs/postfix/ フォルダに作成されます(フォルダは変更できますが、Postfix 構成でもパスを変更する必要があります)。

これらの手順を行うと、Postfix は新しい証明書で機能するようになります。以下のコマンドで確認できます。

[root@centos ~]# openssl s_client -crlf -connect localhost:465
CONNECTED(00000003)
depth=0 C = US, ST = SomeState, L = SomeCity, O = Company Co, OU = Company Co, CN = domain.tld, emailAddress = admin@domain.tld
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = SomeState, L = SomeCity, O = Company Co, OU = Company Co, CN = domain.tld, emailAddress = admin@domain.tld
verify return:1
---
Certificate chain
0 s:/C=PK/ST=SomeState/L=SomeCity/O=Company Co/OU=Company Co/CN=domain.tld/emailAddress=admin@domain.tld
i:/C=PK/ST=SomeState/L=SomeCity/O=Company Co/OU=Company Co/CN=domain.tld/emailAddress=admin@domain.tld
---
他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。