Contents
1. Apache2 : SSL/TLS の設定
Let’s Encryptで取得したSSL証明書をapacheへ適用する方法を説明。
ドメイン名 : hoge.comとする
1.1 Apache2の設定
①Apache2設定ファイルの編集
デフォルトのconfファイルをリネームしてコピー(例として「hoge.com-ssl.conf」)
1 2 |
# cd /etc/apache2/sites-available/ # cp default-ssl.conf hoge.com-ssl.conf |
1 2 3 4 5 6 7 8 |
# vi hoge.com-ssl.conf # 3行目:管理者アドレス変更 ServerAdmin <メールアドレス> # 32,33行目:取得したLet’s Encrypt証明書に変更 SSLCertificateFile /etc/letsencrypt/live/hoge.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/hoge.com/privkey.pem # 42行目:コメント解除して取得したLet’s Encrypt証明書チェインファイルに変更 SSLCertificateChainFile /etc/letsencrypt/live/hoge.com/chain.pem |
有効化
1 2 3 4 |
# a2ensite hoge.com-ssl.conf Enabling site hoge.com-ssl.conf. To activate the new configuration, you need to run: systemctl reload apache2 |
デフォルト無効化
1 |
# a2dissite default-ssl.conf |
②SSLモジュールを有効
1 2 3 4 5 6 7 8 9 10 11 |
# a2enmod ssl Considering dependency setenvif for ssl: Module setenvif already enabled Considering dependency mime for ssl: Module mime already enabled Considering dependency socache_shmcb for ssl: Enabling module socache_shmcb. Enabling module ssl. See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates. To activate the new configuration, you need to run: systemctl restart apache2 |
Apache2再起動
1 |
# systemctl restart apache2 |
1.2 httpからhttpsリダイレクト
①「.htaccess」ファイルを作成する方法
.htaccessを/var/www/html/<FQDN>/に作成して以下記入
1 2 3 |
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
②vhost-hoge.com.conf に記入の方法
1 2 3 4 5 6 |
# vi /etc/apache2/sites-available/vhost-korodes.com.conf 最初の行に下記を追加 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
②設定反映
1 2 3 |
# a2ensite vhost-korodes.com.conf # a2dissite 000-default.conf ← デフォルト無効化 # systemctl restart apache2 ← Apache2再起動 |
2.メールサーバー : SSL/TLS の設定
暗号化通信ができるよう SSL/TLS の設定をします。
SMTPS は 465/TCP, POP3S は 995/TCP, IMAPS は 993/TCP を使用します
2.1 バーチャルホストの設定とメール用証明書取得
①メールホストのバーチャルホスト設定
1 |
# cd /etc/apache2/sites-available/ |
1 2 3 4 5 6 7 8 9 10 11 12 |
# vi vhost-hoge.com.conf <VirtualHost *:80> ~省略~ ServerName mail.hoge.com ServerAdmin <メールアドレス> DocumentRoot /var/www/html/mail.hoge.com ~省略~ ErrorLog ${APACHE_LOG_DIR}/mail.hoge.com.error.log CustomLog ${APACHE_LOG_DIR}/mail.hoge.com.access.log combined ~省略 </VirtualHost> |
②ディレクトリー作成
1 |
# vi /var/www/html/mail.hoge.com |
③letsencrypt SSL証明書の取得
1 |
# certbot certonly --webroot -w /var/www/html/mail.hoge.com -d mail.hoge.com |
2.2 Postfix の設定
①「main.cf」の編集
1 2 3 4 5 6 7 8 9 10 11 |
# vi /etc/postfix/main.cf # 最終行に追記 smtpd_use_tls = yes smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 smtpd_tls_cert_file = /etc/letsencrypt/live/korodes.com/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/korodes.com/privkey.pem smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache # 暗号に関する情報を "Received:" メッセージヘッダに含める smtpd_tls_received_header = yes |
②「master.cf」の編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# vi /etc/postfix/master.cf submission inet n – y – – smtpd ←以下、コメントを外します。(SSL,STARTTLSどちらにも対応) -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_tls_auth_only=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATINGt smtps inet n – y – – smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n – y – – qmqpd |
③設定に誤りがないかチェック
1 |
# postfix check |
なにも表示されなければOKです
④Postfixの起動と自動起動
1 2 |
# systemctl start postfix # systemctl enable postfix |
2.3 Dovecotの設定
①「10-ssl.conf」の編集
1 2 3 4 5 6 7 |
# vi /etc/dovecot/conf.d/10-ssl.conf # 6行目:変更 ssl = yes # 12,13行目:コメント解除して証明書/鍵ファイル指定 ssl_cert = </etc/letsencrypt/live/mail.hoge.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.hoge.com/privkey.pem |
②「10-master.conf」の編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# vi /etc/dovecot/conf.d/10-master.conf service imap-login { inet_listener imap { #port = 143 port = 0 } inet_listener imaps { #port = 993 #ssl = yes port = 993 ssl = yes } } service pop3-login { inet_listener pop3 { #port = 110 port = 0 } inet_listener pop3s { #port = 995 #ssl = yes port = 995 ssl = yes } } ・Dovecot SASL ライブラリの認証ソケットファイルを指定(113行目あたりです) service auth { (略) # Postfix smtp-auth #unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} ↓ # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } } |
③認証方式の設定
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# vi /etc/dovecot/conf.d/10-auth.conf #disable_plaintext_auth = yes ↓ disable_plaintext_auth = no auth_mechanisms = plain ↓ auth_mechanisms = plain login |
④メールボックスの場所を指定
1 2 3 4 5 6 7 |
# vi /etc/dovecot/conf.d/10-mail.conf #mail_location = ↓ mail_location = maildir:~/Maildir |
⑤ログの出力先を変更
1 2 3 4 5 6 7 |
# vi /etc/dovecot/conf.d/10-logging.conf #log_path = syslog ↓ log_path = /var/log/dovecot/dovecot.log |
⑥ログの出力先作成
1 |
# mkdir /var/log/dovecot |
⑦Dovecotを起動と自動起動の設定
1 2 |
# systemctl start dovecot # systemctl enable dovecot |
⑧認証ソケットファイルが作成されているのを確認
1 2 3 4 5 |
# ls -F /var/spool/postfix/private/auth ---(下記表示があればOK)--- /var/spool/postfix/private/auth = |
3.FTPサーバーにSSL/TLS の設定
Webサーバ暗号化で取得したLet's Encryptでftpの転送も暗号化します。
3.1 Vsftpd設定
①設定ファィル編集
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# vi /etc/vsftpd.conf ---(下記を最終行に追記)--- # add letsencrypt rsa_cert_file=/etc/letsencrypt/live/hoge.com/fullchain.pem rsa_private_key_file=/etc/letsencrypt/live/hoge.com/privkey.pem ssl_enable=YES force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO #pasv port pasv_enable=YES pasv_min_port=21000 pasv_max_port=21010 |
1 |
# systemctl restart vsftpd |
3.2 Firewall設定
ftpポート以外に固定したPASVポートを許可します
1 |
# ufw allow 21000:21010/tcp |