22 Jul 09:35Hosting VPS / VPS

Cài đặt SSL cho ISPConfig 3 Control Panel với Let's Encrypt Free SSL

Hướng dẫn này cho biết cách tạo và định cấu hình chứng chỉ SSL mã hóa miễn phí cho giao diện ISPconfig (cổng 8080), hệ thống email (Postfix và Dovecot / Courier), máy chủ FTP (thuần-ftpd) và Monit. Các lệnh trong hướng dẫn này đã được thử nghiệm trên Ubuntu 16.04, chúng cũng sẽ hoạt động với Debian. Một số sửa đổi có thể cần thiết để làm cho nó hoạt động trên CentOS.

Bạn có thể tham khảo về cách cài đặt ISPConfig tự động trên VPS tại bài hướng dẫn.

Lưu ý : chúng tôi thực hiện tất cả những điều này trong chế độ sudo bằng cách sử dụng nginx làm ví dụ và nó cũng sẽ hoạt động cho apache2 và máy chủ ISPConfig khác.

ISPConfig tạo trên vps phải có Hostname FQDN ( Ví dụ : panel.azchip.net ) Để kiểm tra Hostname FQDN trong ssh bạn dùng lệnh 

hostname -f

kết quả sẽ ra như sau :

root@panel:~$ hostname -f

panel.azchip.net

Tên miền của bạn cũng phải trỏ về IP của VPS trước khi cài đặt SSL

Tiếp theo trên SSH Bạn nhập như dưới. Đoạn mã này dùng cho nginx, nếu bạn dùng apache2 thì bạn thay thế đoạn mã lại  :

Đoạn mã này dùng cho nginx

lelive=/etc/letsencrypt/live/$(hostname -f)
if [ ! -d "$lelive" ]; then
certbot certonly --authenticator standalone -d $(hostname -f) --pre-hook "service nginx stop" --post-hook "service nginx start"
fi

Đoạn mã này dùng cho apache2

lelive=/etc/letsencrypt/live/$(hostname -f)
if [ ! -d "$lelive" ]; then
certbot certonly --authenticator standalone -d $(hostname -f) --pre-hook "service apache2 stop" --post-hook "service apache2 start"
fi


Khi các chứng nhận LE SSL được tạo, các tệp SSL ISPConfig sẽ liên kết với các tệp Let's Encrypt SSL . Bạn nhập lệnh tiếp theo :

ispccrt=/usr/local/ispconfig/interface/ssl/ispserver.crt
ispckey=/usr/local/ispconfig/interface/ssl/ispserver.key
ispcpem=/usr/local/ispconfig/interface/ssl/ispserver.pem
ln -sf $lelive/fullchain.pem $ispccrt
ln -sf $lelive/privkey.pem $ispckey
cat $ispckey $ispccrt > $ispcpem; chmod 600 $ispcpem


Bây giờ chúng tôi sử dụng một cách đơn giản hơn thông qua lệnh sed trên tệp ispconfig.vhost, ví dụ: cho nginx:

sed -i "s/ssl off/ssl on/g" /etc/nginx/sites-available/ispconfig.vhost
sed -i "s/#ssl_/ssl_/g" /etc/nginx/sites-available/ispconfig.vhost

Lệnh cho apache2

sed -i "s/#SSL/SSL/g" /etc/apache2/sites-available/ispconfig.vhost
sed -i "s/SSLCACertificateFile/#SSLCACertificateFile/g" /etc/apache2/sites-available/ispconfig.vhost

Bây giờ bạn vào trang ISPConfig 3.1 Control Panel  để kiểm tra 

https://server.domain.tld:8080  Thay thế bằng tên miền của bạn, Bạn kiểm tra xem https đã chuyển qua màu xanh chưa ? nếu vẫn đỏ thì bạn nhập lệnh :

ispconfig_update.sh

Tiếp theo bạn vào lại https://server.domain.tld:8080 để kiểm tra

Dựa trên việc bảo mật cài đặt ISPConfig 3 của bạn, chúng tôi sử dụng symlink đến ispserver.key hoặc .crt hoặc .pem thay vì trực tiếp trỏ mã bưu điện, dovecot, chuyển phát nhanh, FTP thuần và monit vào cùng một tệp SSL.

 Cài cho postfix:

cd /etc/postfix/
ln -sf /usr/local/ispconfig/interface/ssl/ispserver.crt smtpd.cert
ln -sf /usr/local/ispconfig/interface/ssl/ispserver.key smtpd.key
service postfix restart; service dovecot restart


Cài dovecot:

Kiểm tra xem nó có được thiết lập để sử dụng các tệp SSL postfix không (xem bên dưới) thông qua lệnh "nano /etc/dovecot/dovecot.conf"

[...]
ssl_cert = </etc/postfix/smtpd.cert
ssl_key = </etc/postfix/smtpd.key
[...]

Nếu đúng như vậy thì bạn thoát ra.

Cài đặt cho courier :

cd /etc/courier/
ln -sf /usr/local/ispconfig/interface/ssl/ispserver.pem imapd.pem
ln -sf /usr/local/ispconfig/interface/ssl/ispserver.pem pop3d.pem
service courier-imap-ssl stop; service courier-imap-ssl start
service courier-pop-ssl stop; service courier-pop-ssl start

Cài đặt cho MySQL / MariaDB :

mcrt=/etc/mysql/server-cert.pem
mkey=/etc/mysql/server-key.pem
mcnf=/etc/mysql/my.cnf
scp /usr/local/ispconfig/interface/ssl/ispserver.crt $mcrt
scp /usr/local/ispconfig/interface/ssl/ispserver.key $mkey
sed -i "/\[mysqld\]/a ssl-cipher=TLSv1.2\nssl-cert=$mcrt\nssl-key=$mkey" $mcnf
service mysql restart

Cài cho pure-FTPd :

cd /etc/ssl/private/
ln -sf /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem
chmod 600 pure-ftpd.pem; service pure-ftpd-mysql restart


Cài cho  monit :

monitrc=/etc/monit/monitrc
ftpdpem=/etc/ssl/private/pure-ftpd.pem
sed -i '/PEMFILE/d' $monitrc
sed -i "s@SSL ENABLE@SSL ENABLE\n\tPEMFILE $ftpdpem@" $monitrc
service monit restart

 

Vậy là xong. mặc định 3 tháng ssl phải gia hạn một lần nên các bạn làm theo cách sau để hệ thống tự động gia hạn.

Trong bước cuối cùng này, sử dụng incron như được đề xuất trong hướng dẫn incron và tạo một tập lệnh để tự động cập nhật tệp ispserver.pem của chúng tôi.
a. Thông qua lệnh terminal, cài đặt incron, sau đó tạo tệp script và chỉnh sửa nó bằng nano:

apt install -yqq incron
nano /etc/init.d/le4ispc_pem.sh

Thêm vào Add le4ispc_pem.sh:

#!/bin/sh
cd /usr/local/ispconfig/interface/ssl/
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
cat ispserver.{key,crt} > ispserver.pem
chmod 600 ispserver.pem; chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart; service monit restart
service postfix restart; service dovecot restart
service mysql restart; service nginx restart

Sau đó, chúng tôi làm cho nó có thể thực thi được, thêm root dưới dạng người dùng được phép cho incrontab và sau đó chỉnh sửa tệp incrontab:

chmod +x /etc/init.d/le_ispc_pem.sh
echo "root" >> /etc/incron.allow
echo "/etc/letsencrypt/archive/$(hostname -f)/ IN_CREATE,IN_MODIFY /bin/bash /etc/init.d/le_ispc_pem.sh" >> /var/spool/incron/root


Khởi động lại hệ thống máy chủ web của bạn sau đó, đây là một máy chủ web. Nếu bạn đang sử dụng apache, hãy thay đổi nginx cho phù hợp.

service nginx restart

Hoặc apache2

service apache2 restart

Chúc các Bạn thành công

Bình Luận
Họ và Tên:
Email:
Chọn vào để xác nhận,
bạn không phải robot: *