https详解之 根证书、服务器证书、用户证书的区别 jg证书
什么是证书链证书链的意思是有一个证书机构A,A生成证书B,B也可以生成证书C,那么A是根证书。操作系统预先安装的一些根证书,都是国际上很有权威的证书机构,比如 verisign 、 ENTRUST 这些公司。我们普通申请的ssl证书都是这些根证书的孙证书。根证书签发中间证书,中间证书签发ssl证书。证书链的顺序是:ssl证书+中间证书+根证书。证书链上的每个证书都是被它相邻的证书签发。
关键句:根证书是第三方被大家信任的认证机构自签名的证书,通常浏览器会内置。
原文:根证书、服务器证书、用户证书的区别_容sir的博客-CSDN博客_根证书和服务器证书https://blog.csdn.net/roddger1/article/details/108222673
https证书包含的文件
ca.cer | 中间证书和根证书 |
nginx.cn.cer | 你申请的ssl证书 |
fullchain.cer | 包括了 ca.cer 和 nginx.cn.cer 的全链证书 |
nginx.cn.key | 证书的私钥 |
什么是证书链
证书链的意思是有一个证书机构A,A生成证书B,B也可以生成证书C,那么A是根证书。
操作系统预先安装的一些根证书,都是国际上很有权威的证书机构,比如 verisign 、 ENTRUST 这些公司。
我们普通申请的ssl证书都是这些根证书的孙证书。根证书签发中间证书,中间证书签发ssl证书。
证书链的顺序是:ssl证书+中间证书+根证书。证书链上的每个证书都是被它相邻的证书签发。
证书以证书链的形式存在, 只有当整个证书链上的证书都有效时,才会认定当前证书合法 :
- 最上层为root,也就是通常所说的CA,用来颁发证书
- 最下层为end-user,对应是每个网站购买使用的ssl证书
- 中间一层为intermediates,是二级CA,这一层可以继续划分为多层,用来帮助root给end-user颁发证书。
浏览器中证书的验证顺序是
首先检查你购买的ssl证书的签发者是不是可信根证书,如果不是那么会检查你的证书的签发机构是否被可信根证书签发,以此类推,直到找到一个可信的根证书,标示你的证书是可信的,如果找不到那么你的证书是不可信的。
根证书是用来签发证书的,不参与通信,一般会内置在客户端的浏览器中。如果服务器没有安装中间证书,那么对于某些非主流浏览器、安卓手机设备,应用程序等可能没办法验证ssl证书的真实性,所以为了兼容所有客户端,服务器需要安装中间证书。
例如下面图中情况:你从证书2处购买了证书3,但是证书2不是默认包含在浏览器种的可信证书,中间证书2是根证书1签发的证书,如果服务器端只发送证书3不包含证书2,那么浏览器找不到证书3的签发者证书2,这样整个证书的验证链条就断裂了,你的证书就会被浏览器标识为无效证书“Invalid certificate” 或 “certificate not trusted”
总结
根证书是第三方被大家信任的认证机构自签名的证书,通常浏览器会内置。
服务器证书是包含包含“ssl证书+中间证书”的证书链,对于某些不知名的中间证书,浏览器是不内置,服务器需要把ssl证书连同中间证书一起发送给浏览器,如果证书链不全,你的证书在这些浏览器上会不被信任。
用户证书有两种理解,如果对于证书颁发机构和服务器来说你可以理解为你申请的ssl证书;对于服务器-客户端交互来说是客户端的证书,比如我们的u盾。
大家可能有一个疑问,服务器上要不要安装根证书?从上面分析可以知道,浏览器是内置了根证书,不需要我们在服务器的证书链上加根证书。
如何安装中间证书?不同web服务器有不同的设置,apache有个变量SSLCertificateChainFile专门对应中间证书bundle,Nginx需要把ssl证书和中间证书打包为一个文件。
证书格式转换
cer和pem格式文件都是证书文件,key文件是私钥文件,证书机构会将两种格式的文件发放给客户。
pem或cer格式转为JKS格式文件包括公钥和私钥
第一步:在openssl命令行下输入如下命令,将pem或cer证书转pfx格式,回车后需要输入两次密码
pkcs12 -export -out server.pfx -inkey server.key -in server.pem(server.cer)
第二步:在命令行下使用java 的keytool工具,将pfx文件转换成jks文件
keytool -importkeystore -srckeystore server.pfx -destkeystore server.jks -srcstoretype PKCS12 -deststoretype JKS
pem格式证书转成cer格式
先在终端cd到文件目录下 然后
openssl x509 -outform der -in xxx.pem -out yyy.cer
或者直接把pem文件双击导入钥匙串,然后再钥匙串里右键导出
(xxx 是原证书的名称,yyy是转格式生成的证书名称)
二 https证书cer转pfx
1:下载openssl对应的版本。链接http://slproweb.com/products/Win32OpenSSL.html
2:使用管理员身份打开cmd
3:进入openssl文件夹bin目录。 cd /d D:\OpenSSL-Win64\bin
3:运行cer转pfx命令:openssl pkcs12 -export -out pfx名称.pfx -inkey key.key -in cer名称.cer
实际运行命令:openssl pkcs12 -export -out D:\证书名称.pfx -inkey D:\key.key -in D:\cer名称.cer
-out:输出的pfx证书
-inkey:cer证书密钥
-in:cer证书
4:键入证书密码并确认密码
Enter Export Password:证书密码
Verifying - Enter Export Password:确认证书密码(输入上一步的密码)
5:pfx文件生成成功,前往-out指定的目录寻找证书
————————————————
版权声明:本文为CSDN博主「月朋鹏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_35019589/article/details/126647920
crt格式转成der格式
先在终端cd到文件目录下 然后
openssl x509 -in xxx.crt -out yyy.der -outform DER
(xxx 是原证书的名称,yyy是转格式生成的证书名称)
参考:
https://support.dnsimple.com/articles/what-is-ssl-certificate-chain/
https://knowledge.digicert.com/solution/SO16297.html
转载请注明本文地址: 根证书、服务器证书、用户证书的区别
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)