如何利用 SSL/TLS 保护你的 Linux 邮件服务 | Linux 中国

如何利用 SSL/TLS 保护你的 Linux 邮件服务 | Linux 中国
最新回答
作业,快到粪坑来

2026-06-29 09:54:21

利用SSL/TLS保护Linux邮件服务需通过生成证书、配置服务、设置安全文件夹及测试等步骤实现。以下是具体操作流程:

一、生成SSL/TLS证书

SSL/TLS证书可通过OpenSSL工具生成,分为自签发证书和购买证书两种方式。

  • 生成证书签发请求(CSR)和私钥使用以下命令生成CSR文件和私钥,过程中需填写域名、地理位置等信息:

    $ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr
  • 生成自签发证书若需自签发证书,需先创建根CA:

    生成根CA私钥(需设置密码):

    $ openssl genrsa -des3 -out myCA.key 2048

    生成根CA证书(有效期5年):

    $ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

    用CSR文件请求根CA签名生成证书:

    $ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256
  • 购买证书若从证书颁发机构购买,需上传CSR文件,下载生成的证书(如mail.mydomain.pem)。若需中间证书,需合并证书文件:

    $ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem
二、生成安全文件夹并设置权限

为证书和私钥创建安全文件夹,并限制访问权限:

$ mkdir /etc/pki/tls$ chown root:root /etc/pki/tls$ chmod 700 /etc/pki/tls$ chmod 600 /etc/pki/tls/*三、配置SMTP和IMAP服务

以Postfix(SMTP)和Dovecot(IMAP)为例,配置其使用SSL/TLS证书。

  • Postfix配置编辑/etc/postfix/main.cf,添加以下内容:

    smtpd_use_tls = yessmtpd_tls_cert_file = /etc/pki/tls/mail.mydomain.pemsmtpd_tls_key_file = /etc/pki/tls/mail.mydomain.key

    自定义加密选项(可选):

    smtpd_tls_eecdh_grade = strongsmtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1smtpd_tls_mandatory_ciphers = highsmtpd_tls_security_level=maysmtpd_tls_ciphers = hightls_preempt_cipherlist = yessmtpd_tls_mandatory_exclude_ciphers = aNULL, MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULLsmtpd_tls_exclude_ciphers = aNULL, MD5, DES, ADH, RC4, PSD, SRP, 3DES, eNULLsmtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
  • Dovecot配置编辑/etc/dovecot/dovecot.conf,添加以下内容:

    ssl = requiredssl_cert = </etc/pki/tls/mail.mydomain.pemssl_key = </etc/pki/tls/mail.mydomain.key

    自定义加密选项(可选):

    ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2ssl_prefer_server_ciphers = yesssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1ssl_min_protocol = TLSv1.2
四、设置SELinux上下文(如启用)

若Linux系统启用了SELinux,需为证书文件设置正确的上下文:

  • Postfix:$ chcon -u system_u -t cert_t mail.mydomain.*
  • Dovecot:$ chcon -u system_u -t dovecot_cert_t mail.mydomain.*
五、重启服务并更新客户端配置

重启Postfix和Dovecot服务,并更新电子邮件客户端配置以使用新端口(如IMAPS的993端口、SMTPS的465端口或Submission的587端口)。部分客户端需手动更新端口设置。

六、测试配置

使用OpenSSL命令行工具测试配置是否生效:

$ openssl s_client -connect mail.mydomain.com:993 # 测试IMAPS$ openssl s_client -starttls imap -connect mail.mydomain.com:143 # 测试IMAP+STARTTLS$ openssl s_client -starttls smtp -connect mail.mydomain.com:587 # 测试SMTP+STARTTLS

测试命令会输出连接详情、证书信息、加密算法等,用于验证配置正确性。