数字证书的理解以及自建CA机构颁发证书
一、理解什么是数字证书
理解数字证书等概念,无数次想好好看看数字证书,CA什么的,都没看懂,直到昨天看到了这篇博文,基本上是理解了
二、阿里云证书的CA证书使用情况
比如我在阿里云申请了一个域名lile.capatain.com,然后我要实现对这个域名能实现https,那么该怎么办呢?
阿里云的文档
1)首先去阿里云购买一个证书(在云盾那里),付钱之后才填写资料
2)然后补全资料
填写域名
填写个人信息
企业组织信息
上传相关信息:(重要的是这一步)
这里需要生成CSR证书请求文件,阿里云的有两种选择,一种是系统生成CSR方式,一种是自己生成CSR,使用他的系统生成CSR方式,将自动生成证书和私钥,并且在证书申请成功后可直接在证书管理列表中下载证书和私钥
3)待审核通过后,就可以管理自己的证书列表了,使用了,如nginx,apache等。
三、自己扮演CA机构签发证书
因为我现在不需要真正的买一个CA证书,所以就自己当CA机构模拟一下,然后给自己的服务器颁发证书
这里模拟需分清楚两个角色:CA证书颁发机构、服务器申请方
CA证书颁发机构:
CA机构
自己扮演CA角色,必须准备好CA机构相关的文件:CA私钥、CSR证书请求文件,根据这两个生成CA根证书
1:生成CA证书私钥
openssl genrsa -out server.key 1024
2:生成CSR文件
openssl req -new -key ca.key -out ca.csr
3:命令行生成CA根证书
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
以上是CA机构的文件准备完毕,下面为HTTPS服务器颁发证书
服务器申请方:
申请数字证书之前,必须准备好证书私钥和证书请求文件CSR(Certificate Signing Request,简称CSR)。CSR文件是公钥证书原始文件,里面包含了申请者的基本信息,如Common Name、Organization,同时也包含了申请者的公钥,需要提交给CA认证中心进行审核
手动生成CSR文件一般需要填写的信息:
• Organization Name(O): 申请单位名称法定名称,可以是中文或英文。
• Organization Unit(OU): 申请单位的所在部门,可以是中文或英文。
• Country Code(C): 申请单位所属国家,只能是两个字母的国家码。如:中国只能是 CN。
• State or Province(S): 申请单位所在省名或州名,可以是中文或英文。
• Locality(L): 申请单位所在城市名,可以是中文或英文。
• Common Name(CN): 申请SSL证书的具体网站域名。
1)使用OPENSSL生成私钥
openssl genrsa -out server.key 1024
2)生成CSR证书请求文件:
openssl req -new -key server.key -out server.csr
准备工作全部做好之后,自建的CA机构就可以根据服务器提供的证书请求文件CSR颁发证书了
openssl x509 -req -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
四、nginx测试
这样证书颁发就完成了,也就是server.crt这个文件,接下来假如到nginx做测试:
1:使用这个功能的模块ngx_http_ssl_module
这个模块并不是默认就有的,必须得在安装编译的时候指定(--with-http_ssl_module),编译才有
2:这个模块要求Openssl
3:修改配置文件
server_name lile.captain.com;
listen 443 ssl;
ssl_certificate /root/test/ca/server.crt;
ssl_certificate_key /root/test/ca/server.key;
打开ssl,建议使用listen 443 ssl,而不是ssl on;
可以看到是没有问题的,这是火狐浏览器,用谷歌浏览器的话会提示这不是安全链接
客户端与服务端的交互过程如下:
1:客户端对域名lile.captain.com发起请求的时候,服务端会先把这个域名对应的证书文件发送给客户端
2:客户端接收到这个域名的证书文件,然后使用自己浏览器里给域名lile.captian.com颁发证书的CA根证书里CA公钥,对lile.captain.com这个域名证书文件进行解密,得到这个证书的hash值以及hash算法,客户端用hash算法对证书做一次hash,取得hash值与之前解密得到的hash值进行对比,一样说明此证书文件没有被更改过,然后客户端就可以使用证书里的公钥和服务端进行通信了
3:客户端会随机生成一个字符串发送给服务端,服务端用私钥加密发送给客户端,然后客户端用公钥解密,如果是的就认为对方是服务端
4:然后客户端随机生成对称密钥,并把对称密钥和生成对称密钥的算法用公钥加密发送给服务端
5:服务端得到后,用自己的私钥解密,然后服务端和客户端就开始了用堆成密钥通信的过程了
6:......通信......
相关博客
作者:李先生
-------------------------------------------
个性签名:在平凡中坚持前行,总有一天会遇见不一样的自己!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
微信公众号 微信打赏 支付宝打赏
posted on 2017-12-28 19:44 Captain_Li 阅读(5436) 评论(0) 编辑 收藏 举报