CA签发证书与Nginx配置Https证书
0.背景
公私钥、证书体系、Https等基础知识。
这个之前有写过ppt,空了我编辑成文章传上来,再更新这里。
1.密钥及证书角色
1.1 CA
以RSA为例
该环节,模拟自己作为CA,生成ca的私钥和根证书。
1.1.1 私钥生成
1.1.2 根证书生成
1.1.3 总结
1.2 用户
1.1.1 私钥生成
1.2.2 生成请求文件CSR
这个玩意有时候也叫p10文件
制作csr的时候,一般在Common Name
处输入我们的域名。
Common Name (e.g. server FQDN or YOUR name) []:example.com
1.2.3 总结
3.CA签发用户证书
1.3.1 签发证书
无非就是私钥给我们的csr文件签名下
1.3.2 总结
经过签发后,我们就有了一个证书文件user.crt
。
2.Nginx配置(服务端)
https最开始的步骤,就是握手前问服务器要下证书,然后通过本地根证书验证下这个证书靠谱不。
然后,证书验证通过,利用这个可信的“公钥证书”来与服务器构建会话密钥。
所以,作为nginx服务器,配置证书时,我们应该要做这2个事情。
- 将私钥对应的公钥证书返回给客户端
- 配置私钥文件,用于解密客户端发送的“公钥证书加密“的数据包。
2.1 配置
2.1.1 linux
2.1.2 windows
2.2 重载ng
2.3 验证
此处使用nginx在win下配置了刚才的证书,本地访问https://127.0.0.1
可以看到已经能够通过https正常访问了。
那么,为啥浏览器提示不安全呢?因为证书是我们自己生成的,可信任根证书里没有我们自己作为CA时的根证书。
当然可以手动操作下,导入就好了,参照3.4、3.5节。
3.扩展
3.1 私钥文件加密
生成私钥时,可以使用对称算法加密私钥,这样私钥就不能直接使用,而是需要输入密码。
通过此种方式生成出来的私钥,是通过des3加密了的,打开生成的文件可以看到ENCRYPTED
标记。
既然加密了,使用的时候肯定需要使用密码操作。如果想要方便,执行下方命令。
这样私钥使用时就不再需要输入密码了。
3.2 CSR文件是啥
csr就是公钥带着刚才那堆备注信息而已,可以在这个网站解析csr文件。
公钥和证书的差别就是证书额外多了个CA签发,其实可以推断,CA无非就是拿着自己的私钥给我们这个csr签名下而已。
3.3 签发后咋多出来一个srl文件
多出来了个srl文件,这个就是证书的序列号信息,签发的证书里面可以看到是一样的。
这个序列号当作唯一id就好了,每个证书都不一样。
3.4 关于自签名证书的问题
上面的演示中,可以发现服务端只是导入了用户私钥user-private.key
和用户证书user.crt
,可以看到服务端根本都没有上传过根证书ca.crt
。
那么问题来啦:如果服务器没有提供 CA 的根证书,客户端如何验证服务器证书的真实性?
-
通常客户端并不需要服务器提供 CA 的根证书
因为根证书应该已经预安装在客户端的操作系统或浏览器中。
根证书通常是由全球信任的证书颁发机构提供的,这些机构的证书内置在客户端软件中。
-
本例中使用的是自签名的根证书
所以客户端必须事先知道并信任这个根证书才能验证服务器证书(
user.crt
)的真实性。如果客户端没有预先安装这个根证书,它将不能验证服务器证书,从而导致安全警告或拒绝建立连接。
-
为了让自签名证书工作,必须手动将 CA 的根证书(
ca.crt
)安装到每个客户端设备上。这样,当 SSL 握手发生时,客户端可以使用已安装的根证书来验证服务器证书。
在实际生产环境中,由于无法要求所有用户都安装自签名的根证书,因此通常会使用具有公信力第三方 CA 签发的证书。
3.5 win导入根证
win + r 打开命令框,输入certmgr.msc
进入win证书管理器。
找到受信任的根证书颁发机构,右键选择导入。
找到我们刚才自己的ca根证,执行导入操作。
导入完成后,可以看到我们的根证书。
__EOF__

本文链接:https://www.cnblogs.com/yang37/p/17942749.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)