概述
一 SSL证书
-
当网站需要启用HTTPS的时候,你就需要SSL证书了。
-
一个证书中包含了公钥、持有者信息、证明证书内容有效的签名以及证书有效期,和其他额外信息。
-
证书分为根证书(root Certificates),中间证书(intermediates Certificates),终端用户证书(end-user Certificates)。
根证书 -> 中间证书 -> 终端用户证书, 它们是一个证书链的关系 -
中间证书就是CA机构的证书,它可能又分一级CA、二级CA。。。
其中根证书和中间证书都可以签发终端用户证书。 -
我们实际部署的都是终端用户证书,它又分为两种。
(1)服务器证书
一般我们所说的证书都是服务器证书,从名字我们就可以知道,它是用来认证服务器的。
当浏览器(客户端)通过HTTPS访问一个网站(服务器)的时候,有一个SSL握手环节(具体原理可自行搜索),这个环节服务器会将它的证书推送给客户端,客户端就去认证这个证书是否可信。
认证过程:浏览器使用权威的CA机构的证书(这些证书操作系统都已预置),去和服务器推送过来的证书A做比对,如果比对成功,说明证书A是由权威CA机构签发的,那么此证书是受信任的。
(具体可查看PKI(Public key certificate)规范体系)
这种认证叫做单向认证。
(2)客户端证书
另外一种认证是比较少见的双向认证,原理与前面类型,只是服务器也需要去认证客户端,所以就有了客户端
证书。
SSL握手期间客户端先把它的证书推送给服务器,认证通过后,服务器再把它的证书推送给客户端。
二 使用openssl生成根证书以及签发服务器证书
这里使用的自签发的根证书,因为它不在客户端受信任证书列表中,因此它签发的其他证书都不受信任。
(1)创建根证书私钥root.key
openssl genrsa -out root.key 2048
(2)利用私钥,创建证书请求文件(CSR)
openssl req -new -key root.key -out root.csr
命令输完后,需要输入一些信息,需要在YOUR name 处一定要填写项目布置服务器所属域名或ip地址
(3)利用私钥和CSR,自签根证书root.pem
openssl x509 -req -in root.csr -signkey root.key -days 3650 -out root.pem
openssl生成的证书都是PEM格式的(就是-----BEGIN CERTIFICATE-----前缀的ASCII(Base64)数据)。
openssl x509 -in root.pem -text –noout查看PEM格式证书
(4)签发服务器证书
首先,按照第1、2步,生成服务器私钥server.key和CSR文件server.csr
然后利用 server.csr、root.pem、server.key,签发服务器证书server.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl ca -in server.csr -cert root.pem -keyfile server.key -out server.pem
(5)导出p12格式证书
导出p12类型格式证书时候必须要密码
openssl pkcs12 -inkey root.key -cacerts -in root.pem -export -nokeys -out root.p12
最后
以上就是霸气项链为你收集整理的自签发SSL证书的全部内容,希望文章能够帮你解决自签发SSL证书所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复