邮件TLS/SSL加密通信

案例1:邮件TLS/SSL加密通信

1 案例1:邮件TLS/SSL加密通信
1.1 问题

本案例要求为基于Postfix+Dovecot的邮件服务器提供加密通信支持,主要完成以下任务操作:

为SMTP服务(postfix)添加TLS/SSL加密通信支持
基于dovecot配置POP3s+IMAPS加密通信支持
客户端收发信测试,确保加密的邮件通信可用

1.2 方案

使用两台RHEL7虚拟机,其中svr7作为CA服务器,而mail作为测试用的Postfix+Dovecot邮件服务器。另外可准备一台pc120作为收发邮件的Windows测试机,安装邮件客户端软件或Outlook 2010。
1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备一个简单的Postfix+Dovecot邮件服务器,支持SMTP认证

1) 快速安装邮件相关软件、添加邮箱账号

确认已安装postfix、dovecot、cyrus-sasl软件包,启动saslauthd服务:

[[email protected] ~]# yum -y install postfix dovecot cyrus-sasl
.. ..
[[email protected] ~]# vim /etc/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
[[email protected] ~]# service saslauthd start ; chkconfig saslauthd on
正在启动 saslauthd:                           [确定]

添加两个邮箱账号mickey、minnie。

[[email protected] ~]# useradd mickey
[[email protected] ~]# echo 123456 | passwd --stdin mickeyy
更改用户 mickeyy 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[[email protected] ~]# useradd minnie
[[email protected] ~]# echo 123456 | passwd --stdin minnie
更改用户 minnie 的密码 。
passwd: 所有的身份验证令牌已经成功更新。

2) 配置并启动postfix服务

[[email protected] ~]# cd /etc/postfix/
[[email protected] postfix]# cp main.cf main.cf.origin
[[email protected] postfix]# vim main.cf
.. ..
myhostname = mail.tedu.cn
mydomain = tedu.cn
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/                                  //设置邮箱路径
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination
[[email protected] postfix]# systemctl restart  postfix
[[email protected] postfix]# netstat -anpt | grep master
tcp        0      0 0.0.0.0:25       0.0.0.0:*       LISTEN      32120/master

3) 配置并启动dovecot服务

[[email protected] dovecot]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir                       //设置邮箱路径
.. ..
 [[email protected] dovecot]# vim /etc/dovecot/conf.d/10-ssl.conf
.. ..
ssl = no                                              //先禁用SSL
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem          //注释掉此处两行内容
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
[[email protected] postfix]# systemctl restart  dovecot
正在启动 Dovecot Imap:                        [确定]
[[email protected] postfix]# netstat -anpt | grep dovecot
tcp        0      0 0.0.0.0:110       0.0.0.0:*       LISTEN      32243/dovecot
tcp        0      0 0.0.0.0:143       0.0.0.0:*       LISTEN      32243/dovecot

4) 简单测试一下,确认未作TLS/SSL加密时邮件收发可用

由root给mickey用户发送一封邮件,确认mickey的邮箱能收到该邮件。

[[email protected] ~]# echo "Hello Mickey" | mail -s "Test Mail XXXX" [email protected]
[[email protected] ~]# cat /home/mickey/Maildir/new/137690..        //找最新的一封邮件
Return-Path: <[email protected]>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: by mail.tedu.cn (Postfix, from userid 0)
        id 28846836EA; Mon, 19 Aug 2017 17:36:58 +0800 (CST)
Date: Mon, 19 Aug 2017 17:36:58 +0800
To: [email protected]
Subject: Test Mail XXXX
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <[email protected]>
From: [email protected] (root)
Hello Mickey

步骤二:创建CSR证书签发申请,提交给CA服务器签署,下载签署后的证书

1) 在mail服务器上,创建服务私钥

由于此例中的私钥主要用于加密的邮件通信,为了方便服务控制,不要设置私钥口令(在postfix中也不好配置) 。

[[email protected] ~]# cd /etc/pki/tls/private/
[[email protected] private]# openssl  genrsa  2048 > mail.key          //不设置私钥口令
Generating RSA private key, 2048 bit long modulus
............................................................+++
................+++
e is 65537 (0x10001)
[[email protected] private]# chmod 600 mail.key

2)在mail服务器上,创建CSR证书签发请求

基于前一步创建的服务私钥来建立CSR请求,根据提示设置的国家、省、市、组织信息要与CA根证书的设置保持一致。

[[email protected] private]# openssl req -new -key mail.key > ~/mail.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Tedu Technology Ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server‘s hostname) []:mail.tedu.cn
Email Address []:[email protected]
Please enter the following ‘extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

3)在CA服务器svr7上,签署并发布证书

首先获得mail服务器(比如SCP方式)提交的CSR证书签发请求文件,然后正式签署并通过httpd服务提供下载。

[[email protected] ~]# scp 192.168.4.120:/root/mail.csr ./
[email protected]‘s password:
mail.csr                                 100% 1062     1.0KB/s   00:00
[[email protected] ~]# cd /etc/pki/CA/certs/
[[email protected] certs]# openssl ca -in ~/mail.csr > mail.crt      //签署证书
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/my-ca.key:          //验证私钥口令
Check that the request matches the signature
Signature ok
Certificate Details:
        .. ..
Certificate is to be certified until Aug 19 08:31:12 2014 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[[email protected] certs]# cp mail.crt /var/www/html/certs/      //复制到Web下载目录

4)在mail服务器上,下载签发好的证书文件,确认私钥、证书的存放路径

[[email protected] ~]# cd /etc/pki/tls/certs/
[[email protected] certs]# wget http://192.168.4.7/certs/mail.crt
.. ..
2017-05-17 16:35:27 (300 MB/s) - 已保存 “mail.crt” [4633/4633])
[[email protected] certs]# ls -lh /etc/pki/tls/certs/mail.crt
-rw-r--r--. 1 root root 4.6K 8月  19 16:32 /etc/pki/tls/certs/mail.crt
[[email protected] certs]# ls -lh /etc/pki/tls/private/mail.key
-rw-------. 1 root root 1.7K 8月  19 16:22 /etc/pki/tls/private/mail.key 

步骤三:分别为postfix、dovecot添加TLS/SSL加密通信支持

大多数情况下,加密的和非加密的服务会同时提供,允许邮箱用户自行选择 。当然,如果确实有需要,可以只提供加密的收发信服务,禁用非TLS/SSL加密的收发信服务。

1) 修改postfix服务配置,启用SSL加密通信

[[email protected] ~]# vim
.. ..
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes              //若启用此项,则非TLS的SMTP通信将被阻止
smtpd_tls_key_file = /etc/pki/tls/private/mail.key
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt
#smtpd_tls_loglevel = 1                  //排错阶段可启用此配置
[[email protected] ~]# service postfix reload
重新载入postfix:                                          [确定]

2)修改dovecot服务配置,启用SSL加密通信

[[email protected] ~]# vim /etc/dovecot/conf.d/10-ssl.conf
.. ..
ssl = yes
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
ssl_cert = </etc/pki/tls/certs/mailsvr.crt
ssl_key = </etc/pki/tls/private/mailsvr.key
[[email protected] ~]# netstat -anpt | grep dovecot
tcp        0      0 0.0.0.0:110       0.0.0.0:*       LISTEN      32243/dovecot
tcp        0      0 0.0.0.0:143       0.0.0.0:*       LISTEN      32243/dovecot
tcp        0      0 0.0.0.0:993       0.0.0.0:*       LISTEN      32243/dovecot
tcp        0      0 0.0.0.0:995       0.0.0.0:*       LISTEN      32243/dovecot

注意:若要禁用非加密的POP3、IMAP通信,可以参考以下配置(可选)。

[[email protected] ~]# vim /etc/dovecot/conf.d/10-master.conf
inet_listener imap {
  port = 0                                    //停用非加密的imap服务
}
inet_listener pop3 {
  port = 0                                    //停用非加密的pop3服务
}

步骤四:在邮件客户端(比如Outlook Express)验证加密的邮件通信

1)为测试用户mickey配置邮件收发账号

设置好电子邮件地址、用户账号密码、收发信服务器等属性。接收邮件选POP3或IMAP,勾选安全连接(SSL) ,如图-1所示。

图-1

2)加密的收发信测试

新建一封测试邮件,发送给[email protected]、抄送给自己,确认能够成功发送并接收邮件。首次发送邮件时会出现安全提示,如图-2所示,选“是”继续即可。

图-2

成功发出邮件以后,即可收取到抄送给自己的邮件,如图-3所示。

图-3

原文地址:http://blog.51cto.com/13735155/2134584

时间: 2024-11-05 13:47:57

邮件TLS/SSL加密通信的相关文章

Liunx 部署邮件TLS/SSL加密通信服务

部署邮件TLS/SSL加密通信服务 一.部署普通邮件服务器 1) 搭建并检测邮件服务的发送服务 [[email protected] ~]# rpm -q postfix postfix-2.10.1-6.el7.x86_64 [[email protected] ~]# netstat -pantu | grep :25 tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1822/ma

Security基础(三):OpenSSL及证书服务、邮件TLS/SSL加密通信

一.OpenSSL及证书服务 目标: 本案例要求熟悉OpenSSL工具的基本使用,完成以下任务操作: 使用OpenSSL加密/解密文件 搭建企业自有的CA服务器,为颁发数字证书提供基础环境 方案: 使用两台RHEL7虚拟机,其中svr7作为CA数字证书服务器,而pc207作为测试用客户机. 步骤: 步骤一:使用OpenSSL加密/解密文件 1)加密文件 创建一个明文的文本文件f1.txt,使用openssl进行加密,选用des3加密算法,输出的加密文件为f1.txt.enc . [[email 

SSL/TLS深度解析--测试TLS/SSL加密

项目地址 https://github.com/drwetter/testssl.sh testssl.sh 是一个免费且开源的功能丰富的命令行工具,用于在 Linux/BSD 服务器上检查支持加密,协议和一些加密缺陷的支持 TLS/SSL 加密的服务. testssl git clone --depth 1 --branch 2.9.5 https://github.com/drwetter/testssl.sh.git 错误 Fatal error: Neither "dig",

开源项目SMSS发开指南(四)——SSL/TLS加密通信详解

本文将详细介绍如何在Java端.C++端和NodeJs端实现基于SSL/TLS的加密通信,重点分析Java端利用SocketChannel和SSLEngine从握手到数据发送/接收的完整过程.本文也涵盖了在Ubuntu系统上利用OpenSSL和Libevent如何创建一个支持SSL的服务端.文章中介绍的知识点并未全部在SMSS项目中实现,因此笔者会列出所有相关源码以方便读者查阅.提醒:由于知识点较多,分享涵盖了多种语言.预计的学习时间可能会大于3小时,为了保证读者能有良好的学习体验,继续前请先安

SSL加密编程(1) 概述

SSL是TCP/IP环境上的标准的安全加密传输协议.SSL的全称是安全的Socket层,它具有与Socket类似的客户端/服务器体制.常见的https即http+ssl,从安全的角度看,https的安全技术就是SSL加密.从建立服务的角度,配置一个web服务器提供https服务,其关键就是获取和设置所需的SSL服务器证书.SSL基本的安全约束是对服务器的验证,这一安全约束被用来防止钓鱼网站仿冒合法的网站,从而防止客户端向假的服务器,如仿冒电子邮件或者网银外观的网站,提供登录口令等敏感数据.注册一

对Elastic集群配置TLS加密通信及身份验证

1.介绍 官方宣布从6.8和7.1开始,免费提供多项安全功能.其中包括tls加密通信,基于角色访问控制等功能. 可以使用企业CA证书来完成这一步骤,但是一般情况下,我们可以通过elasticsearch自带的elasticsearch-certutil的命令生成证书.然后各节点通过该证书可以进行安全通信. 2. 步骤 2.1 生成证书 搭建好了es集群,先拿第一个节点来操作,进入elasticsearch目录,然后执行以下命令. cd /usr/share/elasticsearch # 使用y

非对称加密,数字签名,公钥私钥,Openssl,https,TLS/SSL等概念说明

本文将通过个人口吻介绍有关公钥私钥,Openssl,https,TLS/SSL等的一些概念及简单配置,在目前时间点(2017年5月7号)下,个人水平有限,存在不少知识理解不够深入,望见谅,后续有新的收获之后将会补充完善该博文. 关于http以及web等基础概念,欢迎看我的另一篇博文:"http,https,www,web等的区别含义" 博文链接地址:http://watchmen.blog.51cto.com/6091957/1922919 本文参考文献引用链接: 1.https://

在SuperSocket中启用TLS/SSL传输层加密

关键字: TLS, SSL, 传输层加密, 传输层安全, 证书使用, X509Certificate SuperSocket 支持传输层加密(TLS/SSL) SuperSocket 有自动的对TLS/SSL的支持,你可以无须增加或者修改任何代码,就能让你的服务器支持TLS/SSL. 想要为你的 SuperSocket 服务器启用 TLS/SSL,你需要先准备好一个授权证书 你有两种方式提供证书: 1.一个带有私钥的 X509 证书文件 你可以通过 CertificateCreator in S

三.mail 接收权限 dovecot加密通信 php数据库 thunderbird

postconf -d:查看默认设置postconf -n:查看当前设置postconf -e "inet_interfaces = all":修改选项inet_interfaces 参数指定postfix系统监听的网络接口. 一.邮件的限制==access==   ##禁止某个ip接受邮件[[email protected] ~]# cd /etc/postfix/[[email protected] postfix]# lsaccess     generic        mai