AWS EC2へSSLを導入

Pocket

SSL/TLS

ネットスケープが開発したSSLのIETF(The Internet Engineering Task Force)の呼び名がTLSです。
SSLとTLSはほぼ同一視できます。

参考サイト

導入手順

大まかなSSL導入手順は下記の通りです。

  1. 証明書をサーバーへ導入
  2. WEBサーバー(Nginx)の設定
  3. SMTPサーバー(Postfix)の設定

必要なフィルは/etc/nginx/sslへ作成しました。

ファイル名 内容 作成/発行 Nginx Postfix
example.com.key 秘密鍵 サーバー / /
example.com.key.rsa example.com.keyからパスフレーズを削除したファイル(※) サーバー
example.com.csr CSR サーバー / /
example.com.cert サーバー証明書 認証機関 ×
example.com.pem サーバー証明書 + 中間CA証明書 認証機関 ×

(※) example.com.keyは認証用のパスフレーズを含みます。
NginxやPostfixで起動時パスフレーズ認証を省くときは
下記方法でパスフレーズを削除したファイルを作成できます。

openssl rsa -in example.com.key -out example.com.key.rsa

サーバーへ導入手順

以下の操作はrootで実行しました。

1. AWS EC2 OpenSSLインストール・確認

既にOpenSSLは導入済みでした。
バージョンを確認します。

$ openssl version

2. 秘密鍵作成(AWS EC2)

/etc/nginx/ssl/example.com.key(ファイル名は任意)という名称でRSA暗号方式の秘密鍵を作成します。

$ su root
# cd /etc/ngnx
# mkdir ssl
# cd ssl
# openssl genrsa -des3 -out ./example.com.key 2048

このときパスワードを求められます。パスワードは以降の処理で必要になります。

秘密鍵の作成で利用したパスワードは以降で利用します。

3 CSR作成(AWS EC2)

SSLの申請で必要になるCSRを作成します。
/etc/nginx/ssl/example.com.csr(ファイル名は任意)という名称でCSRを作成しました。

# cd /etc/nginx/ssl
# openssl req -new -key ./example.com.key -out ./example.com.csr
# 下記の表の値を入力していく。
フィールド 説明 設定値
Country Name※ 国を示す2文字のISO略語 JP
State or Province Name※ 都道府県 Nagoya
Locality Name 市区町村 Nagoya-shi
Organization Name 組織名 Example
Organization Unit Name 部署名 ハイフン
Common Name ウェブサーバのFQDN www.example.com
Email Address 入力不要 未入力
A challenge password 入力不要。 未入力
An optional company name 入力不要 未入力

3 サービス会社で申請処理

CSRの内容をフォームにコピーし必要事項を記載しSSLの申請を行いました。

4 認証機関より承認確認メール受信

メールに記載のリンクをクリックし承認します。

5 認証機関もしくは取り次ぎ会社より証明書受信

件名「RapidSSL Fulfilment E-Mail」というメールが送信されます。
Rapid SSLサーバー証明書と中間CA証明書が記載されています。

6 pemファイル作成(AWS EC2)

サーバー証明書と中間証明書を結合してpemファイル作成します。
/etc/nginx/ssl/example.com.pemを作成しました。

7 AWS EC2 Security GroupでHTTPS(443)開放

AWS EC2 Security GroupでHTTPSを開放します。

Nginxの設定

1. Nginx設定(AWS EC2)

/etc/nginx/sites-available/defaultへSSLの記載を行います。

.....
server {

    listen 443;
    server_name yourdomain.com;
    ssl on;

    # 秘密鍵
    ssl_certificate_key  /etc/nginx/ssl/example.com.key.rsa;

    # 証明書
    ssl_certificate      /etc/nginx/ssl/example.com.pem;

    ssl_session_timeout  5m;
    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    .........
}

設定が正しいかは下記コマンドで確認できます。

# nginx -t

Postfix設定

設定ファイル

/etc/postfix/main.cf
/etc/postfix/master.cf

main.cf

TLSの項目を追加します。

# TLS parameters
# smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file=/etc/nginx/ssl/example.com.cert
smtpd_tls_key_file=/etc/nginx/ssl/example.com.key.rsa
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom

master.cf

smtpsの項目をコメントアウトします。

smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。