首页 > 编程知识 正文

https 过程,如何升级https

时间:2023-05-06 20:56:00 阅读:116714 作者:4835

前言本文介绍了网络中数据的安全传输、加密算法、Https确保数据传输的安全性、SSL证书分析、CA认证过程、OpenSSL、Nginx中高性能Https的实现。

数据加密技术加密算法的对称加密(AES加密)和在jdk中应用_踩的博客-CSDN博客_jdk对称加密

加密算法的安全哈希算法,RSA非对称加密算法分析_踩踩博客-CSDN博客

它从原理上分析了几种加密技术,包括对称加密、一致性哈希算法和不对称加密。

Http安全性能HTTP HTTP协议,即超文本传输协议(hypertext传输协议)。 详细规定了浏览器和万维网(WWW=World Wide Web )服务器之间的相互通信规则,是通过互联网发布万维网文档的数据发布协议。 仅在传输中,http是一个很好的传输协议,因为它在请求标头中添加了cookie的长连接标识符、数据大小、请求类型、请求资源等。 对于数据传输非常有用。 但它是互联网上的传输,特别是在互联网环境下,是明文传输,容易泄露,容易被浏览器拦截,看得很清楚。

加密和加密数据的技术应运而生。 https的发生

摘要算法消息摘要算法用于验证数据完整性,MD (消息摘要)消息摘要sha (安全摘要)消息摘要shm

可以用于防止内容被篡改。 密码加密,文件校验码

对称加密标准(des )数据加密算法(pbe )基于密码的加密, 基于密码认证的)非对称加密RSA )算法的名字是发明人的名字: Ron Rivest AdiShamir和leonardadleman (DH (diffie-hellman算法,密钥匹配协议) DSA ) DSA

Https协议SSL/STL

安全套接字层(SSL )是基于HTTPS的协议加密层。 HTTP不安全,因为它使用明文传输数据。 为了解决这个问题,网景公司推出了SSLsecuresocketprotocollayer。 HPPTS是HTTP SSL/TCP的简称,因为SSL是HTTP下TCP上方的协议层,在TCP传输数据时根据HTTP标准进行加密。 传输层安全(TLS )是一种安全的传输层协议,它保障APP应用程序之间的通信安全。 因为SSl 3.0版本改名为TLS,所以TLS是从SSL转来的。 把明文转换成密文加密。

HTTPS HTTPS (全名: hypertexttransferprotocoloversecuresocketlayer超文本传输安全协议),简单说就是HTTP 在HTTP下放置SSL层,HTTPS的安全基础是SSL,因此加密详细信息需要SSL。 Https协议体系结构配置http://www.Sina.com//http://www.Sina.com /,用于验证用户或服务器,以及数据正确的客户端或服务器http://www.Sina.com安全保证:

兼容性不仅仅是http。 也包括ftp、mqtt协议、redis协议等。

HTTPS完全基于SSL/TLS实现了三点安全保证SSL/TLS在握手阶段依赖数字证书建立安全会话在数字证书上以非对称加密生成的公钥,以及在发送阶段对自己的数字签名SSL/TLS对称加密的数字签名Https和Http的区别Https协议需要向CA申请数字证书。 http是超文本传输协议,信息是明文传输; https是一种安全的ssl加密传输协议。 http和https使用完全不同的连接方式,使用的端口也不同。 前者是80,后者是443。 http连接简单、无状态HTTPS协议是一种基于SSL HTTP协议的可加密传输、认证的网络协议,它以比http协议更安全的HTTPS加密数据,比ht

tp慢 Https如何保证数据传输安全 SSL/TLS的握手过程—秘钥协商 在请求连接时,支持的协议版本,支持的加密和压缩算法,并产生随机数,给服务端;服务端确定要加密协议版本和加密算法,服务器的证书,产生随机数 ,返回给客户端 生成私钥 公钥加密后的随机数 编码改变 握手结束  编码改变通知 ,三个随机数产生的密钥 对称加密进行数据传输 

 

Https协议安全保证的原因 SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密,也就是说在SSL上传送的数据是使用对称密钥加密的!因为非对称加密的速度缓慢,耗费资源。 其实当客户端和主机使用非对称加密方式建立连接后,客户端和主机已经决定好了在传输过程使用的对称加密算法和关键的对称加密密钥,由于这个过程本身是安全可靠的,也即对称加密密钥是不可能被窃取盗用的,因此,保证了在传输过程中对数据进行对称加密也是安全可靠的,因为除了客户端和主机之外,不可能有第三方窃取并解密出对称加密密钥! 如果有人窃听通信,他可以知道双方选择的加密方法,以及三个随机数中的两个。整个通话的安全,只取决于第三个随机数能不能被破解。 https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加 密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的 安全性。 SSL证书 CA和数字证书 怎么能确定客户端所得到的公钥一定是从目标主机那里发布的,而且没有被篡改过呢? 需要有一个权威的值得信赖的第三方机构CA(一般是由政府审核并授权的机构)来统一对外发放主 机机构的公钥,只要请求方这种机构获取公钥,就避免了上述问题的发生。 数字证书的颁发过程 用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核 实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发给用户一 个数字证书,该证书内包含用户的个人信息和他的公钥信息,同时还附有认证中心的签名信息(根证书 私钥签名)。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布,数字证书各不相同,每种证书可提供不同级别的可信度。 浏览器CA认证流程 浏览器默认都会内置CA根证书,其中根证书包含了CA的公钥 证书颁发的机构是伪造的:浏览器不认识,直接认为是危险证书 证书颁发的机构是确实存在的,于是根据CA名,找到对应内置的CA根证 书、CA的公钥。用CA的公钥,对伪造的证书的摘要进行解密,发现解不了,认为是危险证书。 对于篡改的证书,使用CA的公钥对数字签名进行解密得到摘要A,然后 再根据签名的Hash算法计算出证书的摘要B,对比A与B,若相等则正常, 若不相等则是被篡改过的。 证书可在其过期前被吊销,通常情况是该证书的私钥已经失密。较新的 浏览器如Chrome、Firefox、Opera和Internet Explorer都实现了在线 证书状态协议(OCSP)以排除这种情形:浏览器将网站提供的证书的序列号通过OCSP发送给证书颁发机构,后者会告诉浏览器证书是否还是有效的。

1、2点是对伪造证书进行的,3是对于篡改后的证书验证,4是对于过期失效的验证。 

OpenSSL

OpenSSL是个多功能命令行工具、他可以实现加密解密、甚至还可以当CA来用、可以让你创建证书、吊销证书。

OpenSSL由应用、TLS、加密、引擎四个组 件层组成。加密组件通过引擎组件来扩展, TLS依赖加密组件,应用组件则依赖TLS和加密组件。 制作证书  SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和 数据传输加密功能的文件,当前大多数的ssl证书是收费的。 通过OpenSSL自建一个CA服务,自己给自己的服务办法数字证书 生成 一个 ssl证书 提取码:s5xe

准备工具

安装keytool(jdk自带)、openssl、nginx、web服务

有两种方法生成数字证书,一种是用JDK带的keytool,另一种是用openssl。

大致流程为上面的。

 Nginx中配置HTTPS

找到nginx运行的配置文件,将服务器证书servercert.pem、钥serverkey.pem、ca根证书cacert.pem放到配置目录下,修改内容如下

http { # 配置https服务 server { # 开启443端口,ssl安全协议 listen 443 ssl; server_name localhost; # 配置证书及服务器私钥 ssl_certificate servercert.pem; ssl_certificate_key serverkey.pem; ssl_client_certificate cacert.pem;# 根级证书公钥,用于验证各个二级client ssl_verify_client on;#开启客户端证书验证 # 会话参数的缓存,所有工作进程之间共享的缓存 ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 启用的密码 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # SSLv3和TLS协议时,服务器密码优先于客户端密码 ssl_prefer_server_ciphers on; location / { root /data/www/; index welcome.html; } }}

Nginx https 双向认证 - i野老i - 博客园 (cnblogs.com)

这在官方核心文档中就有配置方式 

Https服务的优化 优化方法 SSL操作消耗额外的CPU资源。在多处理器系统上,应该运行多个工作进程,而不小于可用CPU核的数量。CPU密集型操作 是SSL握手。有两种方法可以使每个客户端的这些操作的数量最小化: 第一个是通过启用Keepalive连接来通过一个连接发送多个请求。 第二个是重用SSL会话参数,以避免用于并行和后续连接的SSL握手。 Nginx中为了减少处理器负载,建议 1. 将工作进程的数量设置为等于处理器的数目,worker_processes 2. 启用维持生命的连接,keepalive_timeout 3. 启用共享会话缓存,禁用内置会话缓存,ssl_session_cache shared:SSL:10m; off,禁用、 none,客户端可重用服务端不缓存builtin,在openssl中重构缓存,`builtin`[:`size`] shared,在worker进程间共享的缓存,`shared`:`name`:`size` 4. 增加会话生存期(默认为5分钟),ssl_session_timeout

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。