ISPmail (2): Mã hóa TLS và Chứng chỉ bảo mật

Trong phần này chúng ta tạo web server và lấy chứng chỉ Letsencrypt.

Bài giảng tương ứng là Creating a TLS encryption key and certificate

TLS cũng là SSL.

Certificate sẽ được dùng ở 3 nơi:

  • Giao diện của webmail
  • Postfix (để chứng thực trong quá trình giao tiếp SMTP với người dùng)
  • Dovecot (để chứng thực trong quá trình giao tiếp IMAP)

Giả sử đã đặt hostname cho RPi (thí dụ bằng raspi-config) và đang SSH vào RPi bằng quyền root.

Webserver cho http

hostname=$(hostname -f)
mkdir -f /var/www/$hostname
chown www-data:www-data /var/www/$hostname

## Cấu hình website http ##
cat > /etc/apache2/sites-available/${hostname}-http.conf <<EOT
<VirtualHost *:80>
  ServerName $hostname
  DocumentRoot /var/www/${hostname}
## Chuẩn bị redirect về https ##
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !.well-known/acme-challenge
  RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]
</VirtualHost>
EOT
ln -s /etc/apache2/sites-available/${hostname}-http.conf /etc/apache2/sites-enabled/
a2ensite ${hostname}-http
a2enmod rewrite

Lấy chứng chỉ LetsEncrypt

## Tạo chứng chỉ letsencrypt ##
certbot certonly --webroot --webroot-path /var/www/${hostname} -d $hostname
## Định kỳ renew ##
echo ‘post-hook = systemctl restart postfix ; systemctl restart dovecot ; systemctl restart apache2’ > /etc/letsencrypt/cli.ini

Thêm https

## Cấu hình website https ##
cat > /etc/apache2/sites-available/${hostname}-https.conf <<EOT
<VirtualHost *:443>
 ServerName $hostname
 DocumentRoot /var/www/${hostname}
 SSLEngine on
 SSLCertificateFile /etc/letsencrypt/live/${hostname}/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/${hostname}/privkey.pem
</VirtualHost>
EOT
ln -s /etc/apache2/sites-available/${hostname}-https.conf /etc/apache2/sites-enabled/
a2enmod ssl
a2ensite ${hostname}-https

## Khởi động lại apache2 ##
systemctl restart apache2

Chuyển hướng http sang https

Việc chuyển hướng đã được chuẩn bị trong phần tạo website http

Chú thích

Sau này chúng ta tạo 3 website:

  • Quản trị CSDL: https://mx.example.org/adminer
  • Quản trị mail server: https://mx.example.org/mailadmin
  • Webmail: https://mx.example.org/webmail

Nếu cấu hình mail server Apache2 đàng sau Nginx reverse proxy thì vẫn cần chứng chỉ SSL cho domain ${hostname} trên cả Apache2 server và Nginx server, nhưng không cần khai báo https trên mail server Apache2

Comments Off on ISPmail (2): Mã hóa TLS và Chứng chỉ bảo mật

Filed under Software

Comments are closed.