网站建设排名的公司,wordpress免费音乐主题,网站打开出现建设中,网站根目录怎么写零、前提准备
首先了解下HTTP和HTTPS的区别#xff1a;
HTTPS与HTTP有什么不同#xff1f;
HTTP是过去很长一段时间我们经常用到的一种传输协议。HTTP协议传输的数据都是未加密的#xff0c;这就意味着用户填写的密码、账号、交易记录等机密信息都是明文#xff0c;随时…零、前提准备
首先了解下HTTP和HTTPS的区别
HTTPS与HTTP有什么不同
HTTP是过去很长一段时间我们经常用到的一种传输协议。HTTP协议传输的数据都是未加密的这就意味着用户填写的密码、账号、交易记录等机密信息都是明文随时可能被泄露、窃取、篡改从而被黑客加以利用因此使用HTTP协议传输隐私信息非常不安全。 HTTPS是一种基于SSL协议的网站加密传输协议网站安装SSL证书后使用HTTPS加密协议访问可激活客户端浏览器到网站服务器之间的SSL加密通道SSL协议实现高强度双向加密传输防止传输数据被泄露或篡改。简单讲HTTPSHTTPSSL即HTTPS是HTTP的安全版。
本次测试相关说明 50.50.1.118作为服务端系统是 linuxopenssl版本是OpenSSL 1.1.1f 31 Mar 2020。 50.50.1.116是客户端系统是Windows10-64 bit。
1、CA机构之根证书的生成
# 生成CA私钥
openssl genrsa -out CA.key 2048
# 生成CA证书签名请求
openssl req -new -key CA.key -out CA.csr
# 生成CA的自签名证书, 即根证书
openssl x509 -req -in CA.csr -extensions v3_ca -signkey CA.key -out CA.crt2、服务端准备
# 生成私钥key
openssl genrsa -des3 -out server.key
# 生成证书签名请求
openssl req -new -key server.key -out server.csr
# 向CA申请证书生成带有CA签名的证书
openssl x509 -days 365 -req -in server.csr -extensions v3_req -CAkey ../CA/CA.key -CA ../CA/CA.crt -CAcreateserial -out server.crt3、 客户端准备
openssl genrsa -des3 -out client.key
openssl req -new -key client.key -out client.csr
openssl x509 -days 365 -req -in client.csr -extensions v3_req -CAkey ../CA/CA.key -CA ../CA/CA.crt -CAcreateserial -out client.crt
# 客户端证书转为p12格式p12格式才能导入浏览器;
# 后续双向认证时客户端发起请求时要携带自己的证书到服务器;
# 怎么携带将p12格式的证书导入浏览器即可;
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p124、生成的证书 一、单向证书校验
更多关于单向认证/双向认证的理论性知识请猛戳SSL单向认证和双向认证分析。
关于nginx的配置可以大概参考下阿里的这篇文章 阿里-在Nginx或Tengine服务器安装SSL证书
验证步骤
1、修改nginx配置文件将服务端证书和服务私钥进行指定并重启nginx 2、客户端将根证书添加到受信任的颁发机构中(可有可无) 3、打开浏览器访问 https://50.50.1.118可以看到服务器响应的结果(nginx欢迎页面) 4、可以通过wireshark进行抓包分析。 修改nginx.conf配置文件 将根证书添加到受信任的机构中 直接双击CA.crt进行安装即可。 开始抓包 抓包分析
可见整个握手过程当中只有服务器将自己的证书响应给客户端 不存在客户端将自己的证书响应给服务器的情况 此即为单向认证。下面再给出一个示例图。 二、双向证书校验
对于一般的https网站来说实际上https所使用的证书是属于单向验证即客户端单向验证服务器的安全性而服务器端是没有对客户端的身份进行验证的。如果自己部署了一些安全性较高的网站不希望被其他人随意访问就可以尝试部署https的双向认证对客户端也添加证书认证。
1、修改nginx配置文件添加对客户端的证书校验并重启nginx 2、打开谷歌浏览器导入客户端证书 ps也可以直接在Windows证书管理器中添加添加如下所示 3、抓包验证
最后重启浏览器(一定要重启, 如果打开多个同类型浏览器,则需全部关闭后再重启)输入 https://50.50.1.118进行访问, 会弹出证书选择框。。。 可以看到服务端和客户端分别给对方响应了各自的证书此即为双向认证。 4、另一种验证方法 (使用curl作为客户端调用验证) 上述我们通过浏览器中导入客户端的p12证书来完成双向验证 实际我们也可以直接利用curl命令来完成验证。。无需做上述中的p12证书的导入。。 我们的客户端windows首先安装crul工具。 Windows下载curl 直接解压即可解压后将bin添加至系统环境变量中。。。
# --cert指定客户端公钥证书的路径
# --key指定客户端私钥文件的路径
# -k不校验证书的合法性因为我们用的是自签名证书所以需要加这个参数否则无法建立连接
# 可以使用-v来观察具体的SSL握手过程curl -k --cert .\client.crt --key .\client.key https://50.50.1.118 -v更多关于curl命令的使用请参考以下文章 1https://www.ruanyifeng.com/blog/2019/09/curl-reference.html 2https://blog.csdn.net/angle_chen123/article/details/120675472
三、参考文章
1、https://zhuanlan.zhihu.com/p/377622199 2、http://www.meilongkui.com/archives/1670 3、https://www.cnblogs.com/simono/p/16629480.html 4、https://blog.csdn.net/qq_37997682/article/details/125472654