LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SSL证书和TLS网络传输数据时提供加密和身份验证的协议

admin
2025年8月14日 21:32 本文热度 60

我们上篇文章介绍了网络安全和加解密相关内容,其中包括了ssl和https的关系.我们在这继续讲解开发使用自己的https服务器

      SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 是在网络上传输数据时提供加密和身份验证的协议。TLS 实际上是 SSL 的升级版,它修复了早期 SSL 的安全漏洞,使通信更加高效和安全。目前,所有版本的 SSL 已被弃用,TLS 已成为主流协议。例如,SSL2.0 发布于 1995 年,2011 年弃用;SSL3.0 发布于 1996 年,2015 年弃用;TLS1.2 发布于 2008 年,TLS1.3 发布于 2018 年。现代互联网中几乎所有 HTTPS 连接都使用 TLS(常见版本为 TLS1.2、TLS1.3),而旧的 SSL 协议已不再推荐使用。 在 TLS 中,当客户端(如浏览器)访问服务器时,会先进行“TLS 握手”来协商密钥。上图示意了完整的 TLS 1.2 握手流程:客户端首先发送 ClientHello,服务器返回 ServerHello 并发送证书,双方交换密钥材料并完成握手。握手完成后,客户端和服务器使用协商好的对称密钥加密后续的数据,从而保证通信的机密性和完整性。

TLS 与 DTLS 的区别和使用场景

      传输层协议不同:TLS 基于 TCP(面向连接、可靠传输),而 DTLS (Datagram TLS) 基于 UDP(无连接、不可靠)握手延迟与丢包处理:由于省略了 TCP 三次握手,DTLS 握手延迟更低,但需要自身处理重传和乱序;而 TLS 在可靠的 TCP 上运行,不需额外处理丢包。

      适用场景:TLS 适用于需要可靠通信的场景,如 HTTPS 网站、API 加密、电子邮件(SMTP over TLS)、VPN(如 OpenVPN 的 TLS 模式)、FTPS、数据库加密等。DTLS 则适用于对延迟敏感或丢包率较高的场景,如实时音视频传输(VoIP、WebRTC)、在线会议、多人游戏、物联网设备通信(如 CoAP over DTLS)等

      示例:WebRTC 的 SRTP 通常使用 DTLS over UDP 来加密媒体流,而大多数浏览器访问网站仍采用 TLS over TCP(HTTPS)来保证稳定性和可靠性

SSL/TLS 证书类型及使用场景

自签名证书 (Self-Signed):由自己生成并签署,没有受信任的 CA 机构背书,因此不被公用浏览器自动信任。优点是生成简单、成本低(免费),常用于开发测试、内网服务或设备间通信(如 Kubernetes、私有内部网站、路由器管理后台、企业 IoT 设备等场景)。缺点是浏览器会弹出安全警告,不适用于面向普通用户的公网服务。

DV (域名型)证书:仅验证域名所有权(Domain Validation)。CA 会检查申请者是否拥有该域名控制权,但不验证组织身份。DV 证书可以为网站提供传输加密,但地址栏和证书中不显示公司信息。特点是申请审核快速(通常几分钟到数小时内签发)。常见于个人博客、小微网站和测试环境。

OV (企业型)证书:在 DV 的基础上,CA 还会验证申请企业或组织的合法身份。OV 证书中会显示组织名称等信息,浏览器地址栏不显示绿色公司名,但证书详情里有企业信息。适用于企业官网或业务网站,需要让用户看到一定的身份信息,安全级别中等。

EV (增强型)证书:需要最严格的验证流程,包括企业注册信息、法人证明等,颁发时审核最严格。安装有 EV 证书的网站,在历史上浏览器地址栏会显示公司名称(曾以绿色栏或公司名突出显示,当前一些浏览器已简化显示但仍标识可信度)。EV 证书提供最高级别的用户信任度,常用于金融、电商、银行等对身份可信度要求极高的场景。

三者对比时,可记住:自签名非公信,DV 只保密不验身,OV 验证企业信息,EV 验证最严且展示企业名称。

在 Nginx 与 Apache2 中加载证书的区别

不同 Web 服务器配置 SSL/TLS 证书的方式略有差异:

Apache (mod_ssl):通常在 <VirtualHost *:443> 块内启用 SSLEngine on,并使用 SSLCertificateFile 指定服务器证书(.crt 或 .pem),SSLCertificateKeyFile 指定私钥文件,若有中间 CA 证书则用 SSLCertificateChainFile 指定。Apache 需要分开配置主证书、私钥和链证书。

<VirtualHost *:443>    ServerName example.com    SSLEngine on    SSLCertificateFile    /etc/ssl/certs/example.crt    SSLCertificateKeyFile /etc/ssl/private/example.key    SSLCertificateChainFile /etc/ssl/certs/ca-bundle.pem    # 其他配置...</VirtualHost>

Nginx:在 server 块内使用 listen 443 ssl; 并配置 ssl_certificate 指向包含服务器证书和中间证书链的文件(例如 fullchain.pem),ssl_certificate_key 指向私钥。Nginx 会将证书和链文件合并后使用,无需单独配置 chain 文件。

server {    listen 443 ssl;    server_name example.com;
    ssl_certificate     /etc/ssl/certs/fullchain.pem;    ssl_certificate_key /etc/ssl/private/example.key;    # 其他配置...}

使用命令行生成自签名证书

可通过 OpenSSL 等工具在命令行快速生成自签名证书。基本流程如下:

生成私钥
openssl genrsa -out private.key 2048
创建证书请求 (CSR)
openssl req -new -key private.key -out request.csr
系统会提示填写组织名称、域名(Common Name)等信息
自签名生成证书
openssl x509 -req -in request.csr -signkey private.key -out cert.crt -days 365
以上命令将用私钥 private.key 对 CSR 进行签名,生成有效期 365 天的自签证书 cert.crt
在XEngine框架Api使用证书
      我们的引擎支持两种模式加载证书信息,具体哪种可以根据自己的证书选择.比如,可以选择通过证书链或者不通过证书链
if (_tcsxlen(st_ServiceCfg.st_XCert.tszCertServer) > 0)            {                xhDLSsl = Cryption_Server_InitEx(st_ServiceCfg.st_XCert.tszCertChain, st_ServiceCfg.st_XCert.tszCertServer, st_ServiceCfg.st_XCert.tszCertKey, falsefalse, XENGINE_CRYPTION_PROTOCOL_TLS);            }            else            {                xhDLSsl = Cryption_Server_InitEx(st_ServiceCfg.st_XCert.tszCertChain, NULL, st_ServiceCfg.st_XCert.tszCertKey, falsefalse, XENGINE_CRYPTION_PROTOCOL_TLS);            }
配置如下:
        "tszCertChain": "./XEngine_Cert/server.crt",        "tszCertServer": "",        "tszCertKey": "./XEngine_Cert/server.key"
dtls也同理:
xhRTCWhipSsl = Cryption_Server_InitEx(st_ServiceConfig.st_XPull.st_PullWebRtc.tszCertStr, NULL, st_ServiceConfig.st_XPull.st_PullWebRtc.tszKeyStr, falsefalse, XENGINE_CRYPTION_PROTOCOL_DTL);        if (NULL == xhRTCWhipSsl)        {            XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动推流WEBRTC-DTLS安全网络,错误:%lX"), Cryption_GetLastError());            goto XENGINE_SERVICEAPP_EXIT;        }
如果你需要了解如何开发https服务器,可以参考我们的开源项目:https://github.com/libxengine/XEngine_Storage


阅读原文:原文链接


该文章在 2025/8/15 12:33:18 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved