SSL握手过程是HTTPS协议中的一个核心部分,它允许客户端及服务器之间进行身份验证,并确保在数据传输的过程中双方的数据都得到了加密保护。在HTTPS连接成功建立之前,SSL握手过程必须在客户端及服务器之间完成。SSL握手过程是整个HTTPS传输过程的安全基石,确保了传输过程中双方的数据即便被黑客窃取也是加密的。
SSL(Secure Socket Layer)是为了解决互联网应用的保密、完整性、验证等问题而设计的安全协议。对于HTTPS协议来说,它是在HTTP协议的基础上加上一层SSL/TLS协议,确保荷载信息在传输过程中得到安全的保护,防止被中间人窃取、伪造、篡改或者重放攻击和其他一些安全问题。
在HTTPS协议连接建立的过程中,SSL握手是不可或缺的一环。SSL握手可以认为是客户端与服务器之间进行的安全协商过程,也是整个传输过程的安全基石。SSL握手完成后,客户端和服务器之间就可以开始加密传输数据。
SSL握手的过程主要包括以下几个步骤:
1. 客户端发送ClientHello消息
客户端在建立HTTPS连接后,首先发送一个ClientHello消息,该消息包含以下信息:
- SSL/TLS协议版本。
- 支持的加密算法集合。
- 随机数(client_random)。
- 按顺序列表打算访问的服务器名。
2. 服务端响应ServerHello消息
服务器收到客户端的ClientHello消息后,根据客户端发来的协议版本信息和加密算法列表选定适合的这两项,然后发送一个ServerHello消息给客户端,该消息包含以下信息:
- 选定的协议版本。
- 选定的加密算法。
- 随机数(server_random)。
3. 服务端发送证书
服务端向客户端发送自己的数字证书,以供客户端验证确认服务器的身份。证书通常以X.509格式存储。客户端使用数字证书中的公钥,检验这个数字证书是否是可以信赖的。
如果运营商对SSL进行中间人劫持,将会伪造一个数字证书发给客户端,在这个数字证书中,证书公钥对应的所有者会是服务器名,这也是窃取机密信息或者篡改数据的原因之一。
4. 客户端验证证书
客户端收到服务端发送的证书后,按照一定的规则验证证书的合法性,如果验证通过,则开始进行下一步的交互。
5. 客户端发送ClientKeyExchange消息
客戶端发送了一个包括重定向信息、余下消息长度和随机数据的信息。它使用发给服务器的随机数和盐值生成预主密钥,并将加密后的预主密钥发送给服务器。
6. 客户端发送ChangeCipherSpec消息
客户端向服务器发送一个消息告诉服务器自己已经提前完成了所有准备工作,可以开始使用加密通信协定了。
7. 服务端发送ChangeCipherSpec消息
服务器向客户端发送一个消息告诉客户端自己已经也完成了所有准备工作,可以开始使用加密通信协定了。
8. 客户端发送Finished消息
客户端向服务器发送一个Finished消息,该消息包含了一个经过计算的验证数据,用于验证握手过程中是否存在任何修改或篡改。
9. 服务端发送Finished消息
服务端向客户端发送一个Finished消息,该消息包含了一个经过计算的验证数据,用于验证握手过程中是否存在任何修改或篡改。
当以上几步完成后,SSL握手过程就完成了。此时,客户端和服务器之间的连接是加密的,所有传输的数据都受到加密保护。
SSL握手过程是HTTPS协议的重要组成部分,可以认为是客户端与服务器之间的安全协商过程。在SSL握手完成后,客户端和服务器之间可以开始安全传输数据。因此,SSL握手过程对于保障HTTPS连接的安全性具有至关重要的作用,完整性,隐私性和可靠性。
互亿无线竭力为您提供全面的SSL证书解决方案,保障您网站的安全与信任。我们呈现丰富多样的SSL证书类型,如DV(域名验证)、OV(组织验证)和EV(扩展验证)证书,满足您各类安全需求。我们提供全面的证书类型,涵盖单域名、多域名以及通配符证书。以便适应您的网站架构需求。我们与全球证书品牌,如Globalsign、DigiCert、GeoTrust、vTrus、COMODO等建立了密切的合作关系,确保您获得高品质的SSL证书。
![]() |
一站式SSL证书购买方案 |
![]() |
享受快速签发的SSL证书服务 |
![]() |
我们提供高性价比的SSL证书价格方案 |
![]() |
提供全方位的SSL证书服务 |
安全套接层SSL(SecureSocketsLayer)协议是一种可以实现网络通信加密的安全协议,可以在浏览器和网站之间建立加密通道,以确保数据在传输过程中不被篡改或窃取。
CA数字证书一般又称为CA证书,它是由CA机构签发的证书。而SSL证书是数字证书,因为配置在Web服务器上,所以也称为SSL服务器证书。SSL证书和CA证书是从属关系,SSL证书只是众多CA证书中的一种。
CA机构是采用公开密钥基础技术,专门提供网络身份认证服务、负责签发和管理数字证书,且具有权威性和公正性的第三方信任机构。SSL证书也是由CA机构签发的,不过CA机构签发的证书有很多种,都叫CA证书,所以SSL证书只是其中一种。
CA中心是颁发SSL证书的机构,您可以通过已购买的SSL证书实例向CA中心提交证书申请。只有当CA中心审核通过您的证书申请后,才会为您签发SSL证书,然后将已签发的SSL证书安装到您的Web服务器,使网站可以实现https加密访问。
SSL证书只有正确安装到Web服务器,才能实现客户端与服务器间的https通信。由于涉及到不同类型Web服务器的配置,您需要在证书签发后,根据实际服务器环境来安装证书。部分知名的SSL证书服务商也会提供免费安装证书服务。例如您选购的是DigiCertSSL证书、SymantecSSL证书、GeoTrustSSL证书等,则可获得免费安装证书服务,不需要自己手动安装。
SSL证书的主要作用是服务器身份认证和数据加密传输,有效地防止了隐私信息被窃取或篡改,防止钓鱼网站假冒、流量被劫持等情况发生。网站部署有效的SSL证书后,在外观上也会发生变化,比如网站网址前缀会变成https,同时浏览器地址栏还会显示绿色安全锁。如果部署的是安全等级高的企业型OV或EVSSL证书,访客还可查看到公司名称,有利于提升品牌形象。
SSL证书格式主要是公钥证书格式标准X.PEM和DER定义在509中、PKCS中定义PKCS#7和PKCS#12、Tomcat专用JKS。SSL证书的常见格式及转化方法如下:
常见的SSL证书格式
DER:DistinguishedencodingRules缩写,二进制编码的证书格式,相当于PEM格式的二进制版本,证书后缀有:.DER.CER.CRT,Java平台主要用于Java平台
PEM:PrivacyEnhancedMail的缩写,Base64编码的证书格式,是将Base64二进制版本编码后,以“—–BEGIN开头,“……”—–END结尾。证书的后缀有:.PEM.CER.CRT,主要用于Apache和Nginx。
PKCS#7:PKCS(Public-KeyCryptographyStandards)PKCS标准中的PKCS#7(CryptographicMessageSyntaxStandard)。它不包含私钥,单独存储证书链和用户证书。证书后缀如下:.P7B.P7C.SPC,主要用于Tomcat和Windowsserver。
PKCS#12:PKCS(Public-KeyCryptographyStandards)PKCS#12标准PKCS#(PersonalInformationExchangeSyntaxStandard)。它包含私钥、证书链、用户证书和密码。证书后缀有:.P12.PFX,主要用于Windowsserver。
JKS:JavaKeyStore缩写,包含私钥、证书链、用户证书,并设置密码。证书后缀为.jks。主要用于Tomcat。
SSL证书格式转换方法
Webtrust认证的CA机构颁发的证书通常只提供PEM格式或PKCS#7格式。如果需要其他证书格式,可以使用以下常用方法进行格式转换。
使用OpenSSL、Keytool转化
1.pem转换pfx
openssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:123456
2.pem转换jks
openssl pkcs12 -export -in 'test.pem' -inkey 'test.key' -out 'test.p12' -passout pass:123456
keytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 123456
3.pfx转换pem
openssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes
4.pfx转换jks
keytool -importkeystore -srckeystore 'test.p12' -srcstoretype PKCS12 -destkeystore 'test.jks' -srcstorepass 123456 -deststorepass 123456
5.jks转换pem
keytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456
openssl pkcs12 -in test.p12 -passin pass:123456 -out test3.pem -nodes
6.jks转化pfx
keytool -importkeystore -srckeystore 'test.jks' -srcstoretype jks -destkeystore 'test.p12' -deststoretype PKCS12 -srcstorepass 123456 -deststorepass 123456SSL
150,000家
企业客户
20年
行业经验
2V1
2对1客户支持