非对称密码-SSL证书

admin 2022年4月6日01:51:43评论72 views字数 2494阅读8分18秒阅读模式

SSL证书和公私钥的关系


先说结论:SSL证书是公私钥密码中的一种应用,属于公钥认证。

SSL证书是上面?

在互联网信道上传输数据,我们需要考虑三个问题:①信息监听窃取②信息篡改③身份伪造为了解决信息监听窃取这个问题,我们使用非对称加密对我们的信息进行加密,这样只有目标能够解密获取明文,整个链路上的窃听者都无法获取到明文,可以称之为公钥加密。而信息篡改这个问题,也很好解决,使用数字签名hash算法对我们的明文进行一个hash,然后将hash跟着明文一起加密后发送过去就可以了。

那么身份伪造怎么解决呢?显然这个身份证明不能由当事人自己发出来,因此必须引入可信第三方(CA)来做证,由第三方来为大家证明身份。SSL证书也正是CA颁发给网站的"身份证",   由于它的生成用到了非对称密钥密钥,因此可以称之为公钥认证。

SSL证书的生成


当服务方向CA提供公钥、组织信息、颁发者等请求认证申请后。• 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信  息进行 Hash 计算,得到一个 Hash 值;• 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名;最后将 Certificate Signature 添加在文件证书上,形成数字证书;

客户端怎么校验SSL证书的合法性

SSL证书是怎么进行身份认证的?我们前面提及了SSL的生成方式,从这个生成我们不难看出,目标证书被CA的私钥进行了前面,那么我们只需要对CA前面后的明文进行解密,看看内容是否一致就可以确定这个证书是否合法了。

• 首先客户端会使用同样的 Hash 算法获取该证书的 Hash 值 H1;
• 通常浏览器和操作系统中集成了 CA 的公钥信息(浏览器预存的一些CA的公钥)
• 如果CA不被信任,或者找不到对应CA的证书,那么就判断证书非法。

小结

SSL证书=服务端公钥+申请者与颁发者信息+签名(由CA的私钥进行的签名)通常SSL证书都是和域名绑定的,因此我们就算得到了证书也无法冒充目标网站,除非你连域名都得到了。

SSL证书的格式

证书的常用格式

一般来说,主流的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。

根据不同的密码库,不同的web服务器,支持和使用的证书格式也各不相同。

  • Tomcat、Weblogic、JBoss等Web服务软件,一般使用Java提供的密码库。通过Java     Development Kit (JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的证书文件。

  • Apache、Nginx等Web服务软件,一般使用OpenSSL工具提供的密码库,生成PEM、KEY、CRT等格式的证书文件。

  • IBM的Web服务产品,如Websphere、IBM     Http Server(IHS)等,一般使用IBM产品自带的iKeyman工具,生成KDB格式的证书文件。

  • 微软Windows     Server中的Internet Information Services(IIS)服务,使用Windows自带的证书库生成PFX格式的证书文件。

各种格式的证书含义

• *.DER或*.CER文件:这样的证书文件是二进制格式,属于公钥,只含有证书信息,不包含私钥,。
• *.CRT文件:这样的证书文件可以是二进制格式,也可以是文本格式,一般均为文本格式,功能与 *.DER及*.CER证书文件相同。
• *.PEM文件:这样的证书文件一般是文本格式,可以存放证书或私钥,或者两者都包含。*.PEM 文件如果只包含私钥,一般用*.KEY文件代替。
• *.PFX或*.P12文件:这样的证书文件是二进制格式,同时包含证书和私钥,且一般有密码保护。

证书识别

对于二进制的证书可能不好分辨,但是文本格式的证书我们完全可以直接打开证书文件。如果显示的是规则的数字字母,例如:—–BEGINCERTIFICATE—– MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh...... —–ENDCERTIFICATE—–

  • 如果存在——BEGIN     CERTIFICATE——,则说明这是一个证书文件。

  • 如果存在—–BEGIN RSA     PRIVATE KEY—–,则说明这是一个私钥文件。

  • 如果存在——BEGIN     PUBLIC KEY——,则说明这是一个公钥文件。

证书格式转换


非对称密码-SSL证书


JKS格式与PFX互转

可以使用JDK中自带的Keytool工具,将JKS格式证书文件转换成PFX格式。

keytool -v -importkeystore -srckeystore mykeystore.jks -srcstoretype jks -destkeystore mykeystore.pfx -deststoretype pkcs12  #将jks密钥库转成pkcs12类型

非对称密码-SSL证书

keytool -v -importkeystore -srckeystore mykeystore.pfx -srcstoretype pkcs12 -destkeystore mykeystore.jks -deststoretype jks#将jks密钥库转成pkcs12类型

非对称密码-SSL证书


将PEM/KEY/CRT格式证书转换为PFX格式

使用 OpenSSL工具,将KEY格式密钥文件和CRT格式公钥文件转换成PFX格式证书文件。

openssl pkcs12 -export-outserver.pfx -inkey server.key -inserver.crt

将PFX转换为PEM/KEY/CRT

openssl pkcs12 -in server.pfx -nodes -out server.pemopenssl rsa -in server.pem -out server.keyopenssl x509 -in server.pem -out server.crtopenssl x509 -inform der -in key.crt -out cer.pem



关于我们


原文始发于微信公众号(风起专注的安全小屋):非对称密码-SSL证书

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月6日01:51:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   非对称密码-SSL证书http://cn-sec.com/archives/874736.html

发表评论

匿名网友 填写信息