一、场景
由于需求和安全的考虑,需要将上一篇文档,使用NanoHttpd搭建的http server改成https的协议,但由于我们测试没办法正式的CA机构颁发的数字证书,所以就使用自签名的方式来验证https server。
由于查看源码得知,NanoHttpd是支持Https的,Support for HTTPS (SSL)

二、Https协议相关的基础知识
HTTPS的基本工作原理想必对于许多开发者来说是非常熟悉的了,我们一起先回忆一下HTTP常见的八股文中的描述:
1.客户端(浏览器)访问 HTTPS 的URL;
2.服务器返回 HTTPS 使用的 CA 证书;
3.客户端(浏览器)验证 CA 证书是否为合法证书;
4.验证通过,证书合法,生成一串随机数并使用公钥(证书中提供的)进行加密;
5.发送公钥加密后的随机数给服务器;
6.服务器拿到密文,通过私钥进行解密,获取到随机数(公钥加密,私钥解密,反之也可以);
7.服务器把要发送给浏览器的内容,使用随机数进行加密后传输给客户端(浏览器);
8.此时客户端(浏览器)可以使用随机数进行解密,获取到服务器的真实传输内容。
那么我们回到我们的主题里,首先需要知道CA证书是什么,CA是证书颁发机构(Certificate Authority)的缩写,那么CA证书就是证书机构颁发的一种数字证书,为什么需要这个机构来颁发证书呢?可以理解为就是一个第三方担保机构,这个担保机构保证了在客户端和服务器的通讯阶段的安全,这样客户端只要是看到证书是这个担保机构担保过的,

本文档详细介绍了如何将NanoHttpd服务器从HTTP升级到HTTPS,重点在于使用自签名证书以确保安全性。首先,解释了HTTPS的基本工作原理和CA证书的角色。接着,展示了如何创建自签名证书,包括使用KeyStoreExplorer创建BKS-V1密钥库,并在Android项目中应用。最后,演示了在Postman和浏览器中验证自签名证书的过程,以及提供了一个简单的MainActivity代码示例。整个过程旨在确保本地HTTP服务器支持安全的HTTPS连接。
最低0.47元/天 解锁文章
9309





