博客
关于我
深入浅出HTTPS工作原理
阅读量:545 次
发布时间:2019-03-09

本文共 2575 字,大约阅读时间需要 8 分钟。

深入浅出HTTPS工作原理及相关加密技术解析

随着网络技术的快速发展,HTTPS在保护数据安全性方面发挥着越来越重要的作用。尽管HTTP作为早期的局icast协议优于斜边传输协议 Crackersseconds loots, 但HTTPS通过SSL/TLS协议实现加密通信,有效解决了明文传输的安全隐患。本文将从非对称加密、证书签名流程、OpenSSL实践等方面,深入浅出HTTPS的工作原理,并结合常见加密算法进行详细讲解。


1 前言

非对称加密与对称加密是数字加密领域的两大核心算法类别。对称加密的加密与解密使用相同的密钥,常见算法包括AES、DES、RC4、BLOWFISH等。而非对称加密中,加密与解密使用不同的密钥(公钥和私钥),代表性算法有RSA、DSA、Diffie-Hellman等。这些算法为HTTPS的安全通信奠定了基础。

OpenSSL是一个开源项目,旨在为传输层安全协议(TLS)和安全套接字协议(SSL)提供完整实现,同时也作为通用密码学工具集。其包含libssllibcryptoopenssl三个主要组件。libcryto主要提供密码学功能,包括非对称加密、哈希算法、随机数生成等;libssl实现了SSL/TLS协议的客户端和服务器端功能;openssl是一个功能强大的命令行工具。


2 加解密过程

2.1 创建公私钥对

首先,使用 OpenSSL 生成私钥:

openssl genrsa -out private.pem 1024

为了提高安全性,还可以指定密码:

openssl genrsa -aes256 -passout stdin -out private.pem 1024

生成私钥后,可以将公钥提取出来:

openssl rsa -in private.pem -pubout -out public.pem

2.2 公私钥加解密

在信息传输中,public.pem 公钥可以被公开分发,对方用其加密数据后传回给你,你可以使用私钥解密。具体操作如下:加密:

openssl rsautl -encrypt -pubin -inkey public.pem -in file.txt -out file.txt.enc

解密:

openssl rsautl -decrypt -inkey private.pem -in file.txt.enc -out file.txt.dec

2.3 对称加密与协作

虽然非对称加密易于实现,但其计算量较大。针对大文件传输,通常使用对称加密结合非对称加密进行优化:生成对称加密密钥:

openssl rand -base64 128 -out aeskey.txt

对文件进行对称加密:

openssl enc -aes-256-cbc -salt -in file.txt -out file.txt.aesenc -pass file:aeskey.txt

解密:

openssl enc -d -aes-256-cbc -in file.txt.aesenc -out file.txt.aesdec -pass file:aeskey.txt

值得注意的是,密码文件通常会用非对称加密方式分发给对方。


3 证书与签名流程

3.1 生成证书签名请求

使用 OpenSSL 生成证书签名请求(Certificate Signing Request):

openssl req -new -key private.pem -out pppan.csr

校验并获取CSR信息:

openssl req -in pppan.csr -noout -text

3.2 CA签名

CA机构签名并颁发证书:

openssl req -x509 -newkey rsa:4096 -nodes -keyout cakey.pem -out cacert.pem -outform PEM
openssl ca -config openssl-ca.cnf -policy sp -extensions sr -infiles pppan.csr -out pppan.crt

3.3 证书验证

验证证书合法性:

openssl verify -CAfile Trusts.pem pppan.crt

4 其他加密技术

4.1 Base64

Base64 是一种常见的编码格式,用于传输二进制数据。例如,生成Base64编码:

openssl enc -base64 -in file.txt -out file.txt.b64

解码:

openssl dec -base64 -in file.txt.b64 -out file.txt

4.2 MD5

使用MD5进行数据校验:

openssl md5 file.txt

验证状态:

memcmp(md_str, "d41d8cd98f00b204e8", 16) == 0

4.3 SHA-1

计算 SHA-1 摘要:

openssl sha1 file.txt

验证:

echo -n "97142F6D9B7AEF5E1E0DAC6FADEC0BE93CAE7CF" > file.txt.sha1openssl sha1 file.txt -verify file.txt.sha1

4.4 HMAC

基于密钥的哈希认证:

KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");SecretKey secretKey = keyGen.generateKey();Mac mac = Mac.getInstance("HmacMD5", secretKey);byte[] macData = mac.doFinal(inputData);

5 总结

HTTPS 的核心在于 SSL/TLS 协议通过非对称加密确保通信安全。证书签名流程通过CA机构验证数据来源可信,而面向量加密算法结合对称加密优化性能。尽管现代 HTTPS 已经流行化,但依然面临挑战,如私钥泄露、CA Compromise等问题。加密技术的不断进步为网络安全提供了更坚实的基础。

转载地址:http://zxhiz.baihongyu.com/

你可能感兴趣的文章
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>