SSL vs TLS vs STARTTLS

邮件安全篇:邮件传输加密(SSL/TLS or STATRTTLS) 本文主要介绍电子邮件客户端中SSL/TLS与STARTTLS的相关名词解释及配置。 阅读详情
AI摘要

本文详细解释了SSL、TLS和STARTTLS的区别与联系,包括它们如何为计算机间的通信提供加密保护,以及不同版本的发展历程。同时介绍了这些协议在电子邮件系统的应用实践。

翻译者:易建科技基础架构中心研发经理张冬卯

SSL vs TLS vs STARTTLS

SSL, TLS和STARTTLS都是在计算机安全里面, 都很容易让人混淆的词.

SSL和TLS都提供了加密2台计算机(如服务器和客户端)之间通信的办法. TLS是SSL的继任者, 所以除非提到具体协议的版本,TLS和SSL这2个词是可以混用的, 在大多数情况下的意思相近.

STARTTLS是一种把已经存在的一条不安全的链接, 用SSL/TLS的加密方法, 把这条不安全的连接升级成安全的连接. 注意, 尽管STARTTLS里面只有"TLS", 但是你既可以用TLS也可以用SSL.

SSL/TLS的版本号

由于历史原因, SSL和TLS之间的版本号顺序并不一致, 当TLS代替SSL作为下一代的加密标准时, TLS采用了新的版本号, 并且

新的版本号下面还有小版本号. 所以按照时间顺序, SSL/TLS的软件版本序号从最老到最新的顺序应该是: SSL v2, SSL v3, TLS v1.0, TLS v1.1, TLS v1.2, TLS v1.3

[译注: 比如我用chrome连接知乎的443端口, 看到的是TLS v1.2加密]

当客户端连接到一个SSL/TLS加密的端口, 或者用STARTTLS升级当前连接时, 通信双方根据双方软件的配置, 做自动协商, 选择某一种SSL/TLS做加密通信.

大量的软件都已经默认支持SSL/TLS[译注: 如浏览器, 邮件客户端, HTTP服务器]. SSL v2早已再多年前由于存在安全漏洞弃之不用. SSL v3也由于有安全漏洞不再使用. 几乎所有软件都支持TLS v1.0. 在2016年10月, TLS v1.1 和 TLS v.2 也已经被广泛的支持.

尽管IE对TLS支持有一些例外.

总有软件搞混TLS和STARTTLS

一个让事情更加复杂的因素是一些邮件客户端也会搞混这2个名词.当他们应该用STARTTLS这个词时, 但他们却错误地用成了TLS.

比如,老版本的Thunderbird里面的选项"TLS"表达的意思是"强制使用STARTTLS升级当前连接, 如果协商失败, 返回连接失败". 另外一个选项

"TLS, if availiable"表达的是"如果服务器支持STARTTLS, 那么就用STARTTLS通信, 如果服务器不支持STARTTLS,那就不安全连接"

SSL/TLS 和STARTTLS的端口

为了增强已有的邮件协议(如IMAP, POP)的安全性, 但是并不破坏原有协议, 协议工程师的做法再是原有协议不变的基础上, 在邮件协议下方增加一个SSL/TLS的传输加密层. 但是为了区分这个协议是明文的邮件协议还是加密的邮件协议, 每种邮件协议都增加了一个额外的端口来传输加密的数据. 所以:

IMAP协议默认端口 143, SSL/TLS 加密的IMAP的默认端口是993

POP 协议默认端口110, SSL/TLS 加密的POP的默认端口是995

SMTP协议默认端口25, SSL/TLS加密的SMTP的默认端口是465

从某种角度看, 每种邮件协议占据2个端口是一种浪费. 所以, 出现了一个解决办法, 你可以只需要使用一个端口.通过普通端口生成的连接起初是不加密的, 但是双方可以通过STARTTLS协议把这个非加密连接升级成加密连接.

上面每种邮件协议都加入了新的协商机制, 邮件服务器告诉客户端当前的明文协议支持升级成加密的连接.在当前连接升级到加密连接之前, 不要做登录操作(传输用户名和密码). 在实现不完整的邮件客户端中, 会出现下面2种错误的处理方法:

一些邮件客户端忽略了服务器表达的"直到升级到加密连接前, 不要发登录密码", 还是尝试登录, 用明文发送用户名和密码. 即使服务器拒绝了这个明文登录, 但是用户名/密码还是已经泄露到互联网中

另一些邮件客户端看到了"直到升级到加密连接前, 不要发登录密码"这个声明. 但它不自动升级当前连接, 而是直接向用户报告登录失败

上面这2个问题引发了现存的邮件客户端广泛的兼容性问题, 所有大多数系统管理员仍然使用双端口的解决方案, 一个端口传输明文协议, 另一个端口传输加密数据.

由于2个端口很容易让客户混淆, 很多邮件服务商采用了一刀切的办法, POP和IMAP协议只保留加密端口, 现在这个配置变成了目前的事实标准. 很多网站禁用了明文传输端口(IMAP的143和POP的110), 强制用户使用加密连接. 由于不再存在明文端口, 这些邮件网站也不再支持STARTTLS协议.

SMTP的STARTTLS是一个例外

[译注: 上文只说很多网站的POP和IMAP协议只支持加密端口, 但是SMTP仍然支持非加密端口]

一个例外是SMTP协议. 很多网站还支持非加密端口的SMTP是另一个原因. 大部分邮件客户端用SMTP协议在端口25提交邮件. 但是SMTP协议最初设计在MTA之前传输邮件.所以新的端口587被rfc定义用来提交邮件.

尽管新端口587没有强制用户使用STARTTLS, 但是随着邮件客户端和邮件服务器之前的安全通信的重要性越来越高, 端口587也变得越来越流行. 所以, smtp的SSL/TLS端口465也被标准回收, 推动用户迁移到新端口587上用STARTTLS协议做加密传输.

结果是在大多数情况下, 邮件系统允许普通用户从端口587通过STARTTLS协议提交邮件(用户安全的提交用户名密码). 通过把邮件提交任务从端口25迁移走, 运行商现在可以封锁所有普通用户25端口, 通常端口25也是垃圾邮件的来源.

不幸的是, 修改SMTP的默认端口的缺点是, 存在大量的邮件客户端, 他们只支持在端口465上的SSL/TLS, 不支持在端口587上的STARTTLS.但是邮件客户端的更新很慢, 所有邮件运营商为了兼容性考虑, 都不会移除端口465.

目前, SMTP的情况是这样, 一些人使用STARTTLS在端口587上登录服务器, 另一些人在端口465用SSL/TLS登录邮件服务器.

[译注: 但一些国内的情况更糟, 一些邮件运营商仍然没有用标准的587端口, 而仍然沿用25端口, 这时候需要用STARTTLS在25端口上登录服务器]

========翻译完========

以上就是我们写登录SMTP服务器代码时注意事项, 一定要知道SMTP的打开的端口是SSL/TLS端口还是明文的需要升级的STARTTLS端口,

然后还要知道Auth的方式, 比如PLAIN AUTH还是LOGIN AUTH等等, 要把这些排列组合才可以正确的发邮件.

用golang表示的代码例子:

用STARTTLS连接SMTP服务器

https://gist.github.com/jim3ma/b5c9edeac77ac92157f8f8affa290f45gist.github.com

直接用SSL/TLS连接SMTP服务器

https://gist.github.com/chrisgillis/10888032gist.github.com

由于golang标准库smtp不支持Login Auth, 需要自己加入新的Auth才可以登录smtp服务器:

https://gist.github.com/andelf/5118732gist.github.com

此外还有如果用TLS连接SMTP服务器, 有时候会发现报错:

panic: x509: certificate is valid for XXX

这是说明邮件的证书没有被ROOT CA认证, 当然和你无关, 解决办法是再tlsconfig里面加一个选项InsecureSkipVerify:

tlsconfig := &tls.Config{ ServerName:host, InsecureSkipVerify:true }

Linux上通过SSL/TLS和start tls连接到LDAP服务器 整合全网的LDAP搭建,SSL\TLS搭建,phpldapadmin搭建,解决你东翻西找的烦恼,一键解决。 阅读详情

相关推荐

Go语言SMTP邮件发送配置全解析:SSL/TLS安全连接与Gomail实战

SMTP(简单邮件传输协议)是互联网电子邮件传输的核心标准,但其原始设计缺乏安全性。为解决明文传输风险,SSL/TLS协议被引入,通过在传输层建立加密通道,确保邮件内容与认证信息的机密性和完整性。理解SSL/TLS的工作原理,特别是证书验证、协议版本协商和加密套件选择,对于构建安全可靠的邮件发送服务至关重要。这项技术的价值在于,它能有效防止中间人攻击、信息泄露,并满足现代应用对数据安全与合规性的基本要求。无论是用户注册验证、系统监控告警,还是营销通知等应用场景,安全的SMTP连接都是保障业务连续性的基础。本

chuliaoqiao4046的博客 319

SSL/TLS/StartTLS区别

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33860737的博客 5541

starttls:将常规的net.Stream连接升级为安全的tls连接

启动TLS 将常规的连接升级为安全的连接。 基于代码,本身基于的旧版本。 用法 该库有一个方法,可以接受选项哈希或准备好的套接字作为第一个参数。 它返回一个 。 starttls(选项,[onSecure]),starttls(套接字,[onSecure]) 支持以下选项: socket -如果未提供,将使用创建 host -用于执行自动证书身份检查,以防御MITM攻击 port -仅在未提供socket情况下用于创建套接字(以及host选项) pair -如果您想提供自己的对象 onSecure回调是可选的,并且接收null或错误对象作为第一个参数(有关错误情况,请参见下文)。 在回调上下文中, this指的是starttls返回的同一对象。 var net = require ( 'net' ) ; var starttls = require ( 'starttls'

LWN: STARTTLS 的坏处!

关注了就能看到更多这么棒的文章哦~STARTTLS considered harmfulBy Jake EdgeAugust 18, 2021DeepL assisted translat...

Linux News搬运工 1018

XTDrone——ALOAM与3D激光雷达三维SLAM(处理没有点云和坐标系报错的问题)

本文介绍了XTDrone中配置如何在三维环境中使用A-LOAM算法配合velodyneHDL32激光雷达包括依赖包安装、代码修改和PX4系统配置,以及相关报错细节的注意事项。

weixin_45390670的博客 1326

实战STM32G0驱动DRV8870/AT8870:PWM+DMA精准调速与H桥衰减模式详解

本文详细介绍了如何使用STM32G0单片机结合DRV8870/AT8870电机驱动芯片实现直流有刷电机的精准控制。重点讲解了PWM与DMA结合实现高效调速的硬件配置与软件驱动方法,并深入剖析了H桥快衰减与慢衰减模式的工作原理及应用场景,为嵌入式电机控制项目提供了完整的实战解决方案。

c7d8e9的博客 595

java mail tls_JavaMail: SSL vs TLS vs STARTTLS

SSL vs TLS vs STARTTLSThere's often quite a bit of confusion around the different termsSSL,TLSandSTARTTLS.SSL and TLSboth provide a way to encrypt a communication channel between two computers (e...

weixin_29491167的博客 735

【SystemVerilog项目实践】4.AHB-SRAMC(验证计划)

验证计划

托马斯的博客 3661

JavaMail: SSL vs TLS vs STARTTLS

SSL vs TLS vs STARTTLS There's often quite a bit of confusion around the different termsSSL,TLSandSTARTTLS. SSL and TLSboth provide a way to encrypt a communication channel between two compute...

weixin_30512043的博客 427

【Cadence】stb仿真和ac仿真——以一个简单的全差分反相放大器仿真为例

最近在补一些仿真方法学的问题,以及一些一直以来都有点模糊的概念,简单记录一下。搭建一个以两个CMOS反相器构成的全差分放大器(28nm工艺,PMOS和NMOS尺寸一致)激励的设置方便共模和差模仿真用同一个TB(这里有一个问题:这个放大器需要在开环下仿真还是闭环下?哪些放大器应用在开环,哪些闭环?这种应用场景不同会导致需要仿真得到开环还是闭环增益,或者环路增益?(我知道放大器在设计的时候肯定都是闭环应用的多,但是什么时候没必要闭环应用?光验证ac和stb仿真是否一样的话有必要有回路吗?

weixin_44951108的博客 5万+

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 447

深入解析SMTP、IMAP、POP3:邮件协议核心原理与工程实践指南

电子邮件作为互联网基础通信服务,其核心依赖于一套标准化的应用层协议。SMTP、IMAP和POP3构成了邮件系统的传输、访问与同步机制,分别承担着邮件中继传递、远程文件夹管理和离线下载等不同职责。理解这些协议的工作原理,对于构建可靠的邮件客户端、集成邮件功能的应用以及排查邮件投递问题具有重要技术价值。在工程实践中,SMTP的端口选择、加密方式及反垃圾邮件策略直接影响送达率;IMAP的UID机制和状态同步是实现多设备一致体验的关键;而POP3的简单设计则在特定离线场景中仍有应用。本文将结合端口配置、认证机制、状

weixin_30522983的博客 220

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1747

Zabbix邮件告警发送设置与排查:SMTP认证、媒介类型、Action链路

邮件告警是监控系统将异常事件推送给运维人员的基础能力,其核心依赖 SMTP 协议、告警规则与收件人过滤机制的协同。触发器发现异常后,Action 负责匹配并决定通知对象,用户媒介控制严重级别与时间段,媒介类型再通过 SMTP 或自定义脚本完成投递。链路中任一环节未对齐,都会表现为邮件发送失败或收件箱无消息。在 Zabbix 邮件告警场景里,6.0 前后内置 Email 的 SMTP 认证能力差异、授权码配置、AlertScriptsPath 脚本路径、动作日志排查与告警收敛,共同决定了告警邮件能否稳定送达。

weixin_31528001的博客 254

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1793

CANoe-vTESTstudio之Test Diagram编辑器

总之,CANoe-vTESTstudio的Test Diagram编辑器提供了一个直观且强大的工具,用于创建和管理测试用例。通过图形化的界面和丰富的功能,测试工程师可以更轻松地编写复杂的测试脚本,并有效地进行测试开发。在上面的示例中,我们创建了一个名为"MyTestCase"的测试用例,并定义了两个测试步骤"Step1"和"Step2"。在上面的示例中,我们在执行"Step1"之后使用条件语句来确定是否执行"Step2"。在每次迭代中,我们创建一个新的测试步骤,并根据迭代次数动态生成相应的日志和验证消息。

TcData的博客 249

ssl tls starttls 区分说明

https://www.fastmail.fm/help/technology_ssl_vs_tls_starttls.html SSL vs TLS vs STARTTLS SSL/TLS vs STARTTLS There's often quite a bit of confusion about the different terms SSL vs ...

iteye_12306的博客 1193

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SpringBoot邮件发送连接失败:SMTP端口加密与超时排查

邮件发送看似是应用层调用,底层却依赖 SMTP 协议完成 DNS 解析、TCP 建连、TLS/SSL 加密协商、身份认证与邮件投递。一旦 TCP 连接或加密握手阶段失败,常见表现就是 Mail server connection failed 或 Could not connect to SMTP host,此时问题通常不在账号密码,而在网络可达性、端口与加密方式匹配、超时设置及证书信任。理解这条链路的价值在于快速区分连接失败与认证失败,避免盲目改凭据。验证码、告警通知、报表推送等场景都依赖稳定发信链路,生

weixin_31220401的博客 228

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何使用 STARTTLS 加密 OpenLDAP 连接

OpenLDAP提供了一个灵活且得到良好支持的LDAP目录服务。然而,默认情况下,服务器本身是通过未加密的网络连接进行通信的。在本指南中,我们将演示如何使用STARTTLS加密连接到OpenLDAP,以将传统连接升级为TLS。我们将使用Ubuntu 14.04作为我们的LDAP服务器。

rubys007的博客 1538

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TLS和SSL 是什么,区别是什么

TLS和SSL 是什么,区别是什么

weixin_45428910的博客 494

SMTP starttls选项

在 FastMail里 对其的解释是: SSL vs TLS vs STARTTLS There's often quite a bit of confusion around the different terms SSL, TLS and STARTTLS. SSL and TLS both provide a way to encrypt a communication ch

MashiMaroJ的专栏 1万+

SSL & TLS & STARTTLS

https://www.fastmail.com/help/technical/ssltlsstarttls.html SSL vs TLS vs STARTTLS There's often quite a bit of confusion around the different termsSSL,TLSandSTARTTLS. SSL and TLSboth provi...

weixin_34401479的博客 335

C++实现SMTP客户端:从Socket到TLS的邮件发送模块开发指南

网络编程是现代软件开发的基础,其核心在于通过Socket建立进程间通信,实现数据交换。在应用层,SMTP协议作为电子邮件传输的标准,定义了客户端与服务器之间的文本命令交互流程。为确保通信安全,SSL/TLS加密技术被广泛采用,它通过在传输层对数据进行加密,有效防止窃听和篡改。对于需要深度集成邮件功能的C++应用,如监控告警或自动化报表系统,掌握底层实现技术具有重要价值。本文以C++和OpenSSL为例,详细解析如何从Socket层开始,逐步构建支持SMTP协议、SSL/TLS加密及MIME格式的邮件发送模块

weixin_34032792的博客 491

使用SSLyze Python API进行TLS安全扫描的完整指南

SSLyze是一款功能强大的TLS/SSL扫描工具,其Python API提供了自动化执行安全扫描和处理扫描结果的能力。本文将详细介绍如何使用SSLyze的Python接口来构建高效、可靠的TLS安全扫描程序。 ## 准备工作 在开始之前,请确保已正确安装SSLyze库。SSLyze充分利用了Python的类型注解(Type Hints)特性,这使得在VS Code、PyCharm等现代IDE...

gitblog_00581的博客 395
上一篇: windows 2012server ftp server用户隔离配置
下一篇: contact form 7定制
xtjie
博客等级 码龄19年 52粉丝 53原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值