ICE之证书格式区别说明

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pemcrt/cer的区别是它以Ascii来表示。

.derwindows下的证书格式,以2进制形式存放。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求

openssl创建CA证书的RSA密钥(PEM格式)
openssl genrsa -des3 -out ca.key 1024

二用openssl创建CA证书(PEM格式,假如有效期为一年)
openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf
openssl是可以生成DER格式的CA证书的,最好用IEPEM格式的CA证书转换成DER格式的CA证书。

x509pfx
pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx

PEM格式的ca.key转换为Microsoft可以识别的pvk格式。
  pvk -in ca.key -out ca.pvk -nocrypt -topvk
PKCS#12 PEM 的转换
openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem
验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem
PFX 格式文件中提取私钥格式文件 (.key)
openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key
转换 pem 到到 spc
openssl crl2pkcs7 -nocrl -certfile venus.pem  -outform DER -out venus.spc
-outform -inform 指定 DER 还是 PAM 格式。例如:
openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER
PEM PKCS#12 的转换,
openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

密钥库文件格式【Keystore

 格式     :  JKS
 扩展名  : .jks/.ks
 描述     : Java Keystore】密钥库的Java实现版本,providerSUN
 特点     :  密钥库和私钥用不同的密码进行保护

 格式     :  JCEKS
 扩展名  :  .jce
 描述     : JCE Keystore】密钥库的JCE实现版本,providerSUN JCE
 特点     :  相对于JKS安全级别更高,保护Keystore私钥时采用TripleDES
 
 格式     :  PKCS12
 扩展名  :  .p12/.pfx
 描述     : PKCS #12】个人信息交换语法标准
 特点     :  1、包含私钥、公钥及其证书
               2、密钥库和私钥用相同密码进行保护
 
 格式     :  BKS
 扩展名  : .bks
 描述     :  Bouncycastle Keystore】密钥库的BC实现版本,providerBC
 特点     :  基于JCE实现
 
 格式     : UBER
 扩展名  : .ubr
 描述     : Bouncycastle UBER Keystore】密钥库的BC更安全实现版本,providerBC
  
 


证书文件格式【Certificate
格式          :  DER 
扩展名       :  .cer/.crt/.rsa

描述          : ASN .1 DER】用于存放证书 
特点          :  不含私钥、二进制

格式          :  PKCS7 
扩展名       : .p7b/.p7r 
描述          : PKCS #7】加密信息语法标准

特点          : 1p7b以树状展示证书链,不含私钥
                  2p7rCA对证书请求签名的回复,只能用于导入

格式          :  CMS 
扩展名       :  .p7c/.p7m/.p7s 
描述          : Cryptographic Message Syntax 
特点          : 1p7c只保存证书
                  2p7msignature with enveloped data
                  3p7s:时间戳签名文件
 
格式          :  PEM 
扩展名       : .pem 
描述          : Printable Encoded Message 
特点          : 1、该编码格式在RFC1421中定义,其实PEM是【Privacy-Enhanced Mail】的简写,但他也同样广泛运用于密钥管理
                  2ASCII文件
                  3、一般基于base 64编码

格式         :  PKCS10 
扩展名      : .p10/.csr 
描述         : PKCS #10】公钥加密标准【Certificate Signing Request
特点         :  1、证书签名请求文件
                  2ASCII文件
                  3CA签名后以p7r文件回复

格式         :  SPC 
扩展名      : .pvk/.spc 
描述         : Software Publishing Certificate 
特点         :  微软公司特有的双证书文件格式,经常用于代码签名,其中
                  1pvk用于保存私钥
                  2spc用于保存公钥

 

<think>好的,用户现在想深入了解WebRTC使用UDP时如何保证传输可靠性,以及WebRTC的建连过程。之前我已经给过一个详细的回答,但用户现在希望结合站内的引用内容,并且根据之前的对话历史来调整回答。首先,我需要回顾之前的回答,确保这次的信息更精准,同时参考用户提供的引用内容。 首先,用户的问题分为两部分:UDP的可靠性机制和建连过程。之前的回答已经涵盖了分层可靠性策略、拥塞控制、序列号和时间戳,以及建连过程中的信令交换、NAT穿透、ICE候选收集和DTLS/SRTP加密。现在需要检查是否有遗漏或需要进一步详细的地方。 用户提供的引用提到TCP在WebRTC中的作用,但用户明确指出WebRTC主要使用UDP,所以需要强调为什么不用TCP,比如延迟问题,以及如何通过UDP实现可靠性。引用1提到TCP的三次握手和可靠性机制,但WebRTC的建连过程可能涉及类似但不同的步骤,比如ICE和DTLS握手。 需要确保回答中对比TCP和UDP在WebRTC中的应用,特别是用户引用的内容里提到TCP延迟高,不适合音视频,所以WebRTC用UDP,但通过其他机制保证可靠性。同时,建连过程需要详细描述,可能包括信令服务器的作用、STUN/TURN服务器的使用、ICE候选交换和连接建立后的加密过程。 用户可能希望了解建连过程中的具体步骤,比如如何收集候选地址,如何进行连通性检查,以及如何最终建立连接。此外,可靠性机制中的NACK、FEC、动态码率调整需要再详细说明,尤其是如何结合UDP的特性来实现这些机制,同时避免TCP的延迟问题。 还需要检查是否有必要提到SCTP协议在数据通道中的作用,以及它如何运行在UDP之上,提供可靠或部分可靠的数据传输。这部分可能和用户提到的引用2中关于TCP的应用形成对比,说明WebRTC如何选择不同的协议来满足不同需求。 最后,确保回答结构清晰,分点列出可靠性机制和建连过程,可能用标题分隔,并添加相关问题以帮助用户深入理解。同时,注意引用之前的注释编号,如[^1]和[^4],保持一致性。</think>### WebRTC基于UDP的可靠性保障机制 WebRTC选择**UDP作为底层传输协议**(尤其针对实时音视频数据),通过**分层设计**和**选择性可靠性策略**弥补UDP无连接、不可靠的缺陷。以下是具体机制: --- #### 一、UDP传输的可靠性保障 1. **分层可靠性策略** - **音视频流(RTP/RTCP)**: 以实时性优先,采用以下技术平衡可靠性与延迟: - **选择性重传(NACK)** 接收端通过RTCP反馈检测丢包(如序列号不连续),发送NACK请求触发发送端重传关键帧(如I帧)。此机制**仅重传必要数据包**,避免TCP式全量重传导致的延迟[^1][^4]。 - **前向纠错(FEC)** 发送端对数据包添加冗余编码(如XOR异或运算),接收端可通过冗余包恢复部分丢包(例如丢失1个包时),减少重传需求。例如: $$ P_1 \oplus P_2 = R \quad \Rightarrow \quad P_1 = R \oplus P_2 $$ - **动态码率调整** 基于网络反馈(丢包率、延迟梯度),实时降低或提升编码码率。例如:高丢包时降低分辨率以减少带宽占用[^4]。 - **数据通道(SCTP over DTLS)**: 通过**SCTP协议**(运行在UDP之上)提供灵活可靠性: - **有序交付(Ordered)**:保证数据包顺序,类似TCP。 - **最大重传次数**:设置重传上限(默认5次),超时后丢弃数据包以避免阻塞。 - **部分可靠性模式**:开发者可选择“尽力可靠”(允许部分丢包)或“完全可靠”(类似TCP)[^4]。 2. **拥塞控制** - **GCC算法(Google Congestion Control)**: 基于**延迟梯度**(包间延迟变化)和**丢包率**动态调整发送速率。 - 若延迟梯度增大,判定网络拥塞,降低发送速率。 - 若丢包率超过阈值(如5%),同步降低码率[^1]。 3. **序列号与时间戳** - 每个RTP包包含**序列号**(检测丢包)和**时间戳**(计算抖动与同步)。 - 接收端通过序列号间隔识别丢包,通过时间戳补偿网络抖动,调整播放缓冲区[^4]。 --- #### 二、WebRTC建连过程 WebRTC通过**信令交换**和**NAT穿透**实现端到端连接,具体分四阶段: 1. **信令交换(Signaling)** - 通过信令服务器(如WebSocket)交换**SDP(会话描述协议)**和**ICE候选地址**。 - **SDP内容**:媒体格式(编码类型、分辨率)、网络协议(UDP/TCP)、ICE参数等。 2. **ICE候选收集(ICE Candidates Gathering)** - 每个端收集所有可能的通信地址(ICE Candidates): - **主机候选**:本地IP地址(如192.168.1.100)。 - **STUN候选**:通过STUN服务器获取公网IP(如NAT映射后的地址)。 - **TURN候选**:通过TURN服务器获取中继地址(用于穿透严格NAT)。 3. **连通性检查(Connectivity Checks)** - 双方通过**STUN协议**发送探测包,测试候选地址的可达性。 - 按优先级(主机 > STUN > TURN)尝试建立连接,直至找到可通行路径。 4. **安全连接建立(DTLS/SRTP)** - **DTLS握手**:基于UDP的TLS协议,交换证书并建立加密信道(用于SCTP数据通道)。 - **SRTP加密**:对音视频流(RTP)使用AES加密,保障媒体数据安全。 --- #### 三、与TCP的对比 | 场景 | WebRTC over UDP | TCP | |--------------------|-------------------------------------|----------------------------------| | **实时音视频** | 优先低延迟,允许部分丢包(NACK/FEC)| 高延迟(重传导致卡顿) | | **文件传输** | 通过SCTP实现可靠传输 | 原生可靠传输 | | **NAT穿透能力** | 支持STUN/TURN穿透复杂网络 | 依赖TCP穿透,成功率较低 | --- ### 相关问题 1. **WebRTC的NACK机制如何避免TCP重传的延迟问题?** 2. **STUN和TURN服务器在ICE过程中分别起什么作用?** 3. **DTLS握手与TCP三次握手有何本质区别?** 4. **GCC算法如何量化“延迟梯度”以判断拥塞?** 如需深入某个技术点,可进一步展开说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值