
随着互联网的快速发展,网络安全威胁也随之不断增加。在保障用户的安全与网络的稳定方面,SSL证书起到了重要作用。而SSL证书双向认证和单向认证则是现在常见的两种方式,本文将对这两种认证方式进行简单介绍和详细解析。
SSL证书是互联网上安全通信的金钥匙,它用于确保网站与用户之间的通信加密安全和身份认证。SSL证书一般分为两类:单向认证和双向认证。
单向认证:单向认证也称为服务器认证,即客户端验证服务器的身份。一般情况下,客户端无需证书,只要服务器具有X.509证书便可向客户端发送加密信息,客户端则可以验证服务器的身份,确保所连接的服务器是真正的服务器,而不是冒充的服务器。
双向认证:双向认证也称为客户端认证,即双方彼此验证。在这种情况下,客户端和服务器都需要证书,服务器需要验证客户端的身份,而客户端也需要验证服务器的身份。在这种情况下,用户需要提供证书才能与服务器交互,SSL认证成功后,服务器和客户端之间的传输数据将使用加密算法进行加密。
通过比较单向证书认证和双向证书认证,可以得出以下优缺点:
1、单向认证
优点:相对简单、易于实施,性能较好,适用于局域网内的应用。
缺点:只能验证服务器身份,不能验证客户端身份,安全性较差。如果服务器的私钥被窃取或伪造,则客户的个人信息可能会被窃取或伪造。
2、双向认证
优点:安全性较高,能够验证服务器和客户端的身份,确保通信双方的身份均是合法的。
缺点:实现相对较为复杂、操作较繁琐,需要对证书的配置和管理进行极其谨慎的处理。同时,双向认证也会导致一些性能问题。
综合来看,单向认证和双向认证都是目前常用的SSL认证方式,两种方式各有优缺点,选择何种方式取决于实际使用环境和需要确保的安全等级。对于大多数情况下,选择单向认证是一个比较好的选择,因为其实施简单、性能好、安全性较高。
当然,对于高安全级别的应用系统,需要更加强大的认证方式,因此双向认证方案便是不二之选择。只有根据实际需求进行选择,才能更好地保证信息通信安全和稳定。
互亿无线致力于为您量身打造全面的SSL证书解决方案,守护您网站的安全与信誉。我们致力于为您提供多种类型的SSL证书,包括DV(域名验证)、OV(组织验证)和EV(扩展验证)证书,满足您不同场景的安全需求。我们承诺为您提供各类证书类型,涵盖单域名、多域名和通配符证书。以满足您网站架构的个性化需求。我们与全球的证书品牌,包括Globalsign、DigiCert、Entrust、Actalis、Sectigo等保持紧密合作,确保您获得优质的SSL证书。
![]() |
一站式SSL证书申请 |
![]() |
享受快速签发的SSL证书 |
![]() |
高性价比的SSL证书价格方案 |
![]() |
我们的完备SSL证书服务 |
CA证书在世界上有四个证书库,世界上所有品牌的证书都是由这些CA机构颁发的。目前,CA证书的使用主要取决于证书品牌。部分品牌证书具有优异的安全性能和兼容性,也得到了市场的认可和信赖。
1.JoySSLJoySSL是网盾数字科研推出的新一代https数字证书,也是目前为数不多的中国自主品牌CA证书之一。JoySSL携手全球可信顶级根源,基于国内服务器验证发布,安全可信,完美兼容,更加稳定快捷。JoySSL自主品牌证书提供免费版本,包括单域名、多域名、通配符等适应范围。其产品深受政府行政单位和高校的认可,在国内市场占有率高,是企事业单位网站加密的首选品牌。
特点:品牌自主,全球可信
2.SectigoSectigo(原ComodoCA)是全球SSL证书市场份额最高的CA公司,目前近40%的CA证书用户选择Sectigo。由于其产品安全、价格低廉,受到了大量站长的信任和欢迎。Sectigo的CA证书品牌包括Sectigo,PositiveSSL,SectigoEnterprise等。
特点:市场占有率高
3.GeotrustGeotrust是世界上最可信的安全品牌之一,专注于企业级SSL证书解决方案。Geotrust为各类企业提供高性价比的数字证书,包括EV、OV,DV,通配符型证书等。Geotrust是SymantecRapidSL和QuickSL是Geotrust旗下的低端证书品牌。特点:品牌知名,兼容性强4.DigicertDigicert收购Symantec数字证书业务后,已成为世界领先的互联网安全品牌。在网站安全、电子邮件安全、数据泄露保护和SSL证书等领域,没有一个品牌能取代Digicert/Symantec的地位。所有DigicertSSL证书,都支持在有效期内免费重新签发服务。特点:证书品牌多,安全性高5.GlobalsignGlobalsign是世界知名的数字证书颁发机构,也是世界上最早的CA之一。GlobalSign是信息安全领域的佼佼者,全球证书发行量超过2000万,为各类企业提供CA证书服务。其SSL证书产品在电子商务行业中很受欢迎。
特点:电子商务行业深受欢迎
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
我们知道证书链的概念,所以,通过服务器返回网站证书路径,我们通过终端证书-中间证书-根证书逐步验证,如果在信任证书列表中找到根证书可以签署证书链上的证书,证书是信任的。这很容易实现,因为JavaJDK帮助我们实现了必要的验证逻辑,并且对客户端是透明的,使用默认的TrustManager:
SSLContextcontext=SSLContext.getInstance("TLS");
///Trustmanager传null将使用系统默认的“SunX509”TrustManager
context.init(null,null,null);
URLurl=newURL("https://www.baidu.com");
HttpsURLConnectionconnection=(HttpsURLConnection)url.openConnection();
connection.setSSLSocketFactory(context.getSocketFactory());
InputStreamis=connection.getInputStream();
当SSLContextinit方法的第二个参数传输到null时,Trustmanager将使用默认的Sunx509实现,代码如下:
TrustManagerFactorymgr=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
mgr.init((KeyStore)null);
TrustManager[]var2=var4.getTrustMan·agers();
当然,功能也可以在TrustManager上扩展,但除非场景极其特殊,否则一般不建议做。上述验证方法在Android系统中基本相似。在启动REST接口访问时,可以根据场景使用不同的验证方法。那么,当网站嵌入网站时,如何保证访问的安全呢?以下是网站的一些方法:
当webview加载页面时,将对证书进行验证。当验证错误时,将回调该方法。Ssleror对象将传递证书。您可以在这里进行自定义验证。自定义验证逻辑可以对传入的证书进行任何自定义验证。同时,通过以上分析,可以看出,要求的安全取决于客户端和服务器之间的许多合同。同时,客户端对证书的验证是整个保证的基础。
v
在线咨询
150,000家
企业客户
22年
行业经验
2V1
2对1客户支持