现代互联网应用中的HTTPS技术

现代互联网应用中的HTTPS技术

在现代互联网应用中,网上诈骗、垃圾邮件和数据泄露等现象时有发生。为了保障数据安全,我们通常选择采用HTTPS技术。甚至在iOS开发中,调用接口必须是HTTPS接口。现在,部分浏览器也开始强制要求网站必须使用HTTPS,网站基于HTTPS已成为趋势。HTTPS的时代已经到来。

SSL/TLS

TLS(Transport Layer Security)是SSL(Secure Socket Layer)的后续版本。

01. 准备工作

在客户端(Windows)生成证书,然后安装到服务端(Linux)。

安装OpenSSL工具

OpenSSL中包含生成证书的工具和各类加密算法。

下载OpenSSL
安装OpenSSL

Windows安装:

双击运行,安装到指定目录即可。

Linux安装(从1.0.x升级):

1. 查看版本命令

bash 复制代码
openssl version 
openssl version -a

2. 下载指定版本的OpenSSL软件

bash 复制代码
https://www.openssl.org/source/
wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz

3. 解压压缩包

bash 复制代码
tar -zxvf openssl-1.1.1o.tar.gz

4. 进入解压后的文件夹执行以下命令编译安装

bash 复制代码
./config shared zlib
make && make install

5. 备份原来的软链接

bash 复制代码
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
find / -name openssl

6. 重新建立软链接

bash 复制代码
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig

// 验证安装
openssl version -a

02. 生成服务端证书

在Windows系统中生成服务端证书,然后再把相关文件上传到服务器。

查看Win系统已存证书

bash 复制代码
certmgr.msc 

证书中的信息

  • Country Name (2 letter code) [XX]:CN
  • State or Province Name (full name) []
  • Locality Name (eg, city) [Default City]:
  • Organization Name (eg, company) [Default Company Ltd]:
  • Organizational Unit Name (eg, section) []:
  • Common Name (eg, your name or your server's hostname) []:

key:私钥

csr:证书签名请求文件,即待签名证书

crt:证书

在Windows下生成证书

1. 生成私钥:.key

找到OpenSSL安装目录下的/bin目录中的OpenSSL.exe,执行以下命令:

bash 复制代码
openssl genrsa -des3 -out c:/dev/server.key

生成私钥,需要提供一个至少4位,最多1023位的密码。

2. 由私钥创建待签名证书:.csr

bash 复制代码
openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr

需要依次输入国家、地区、城市、组织、组织单位、Common Name和Email。Common Name可以写自己的名字或者域名。如果要支持HTTPS,Common Name应该与域名保持一致,否则会引起浏览器警告。

3. 查看证书中的内容

bash 复制代码
openssl.exe req -text -in c:/dev/pub.csr -noout

生成内容清单:

server.key:服务器私钥

pub.csr:服务器待签名证书

03. 自建CA对证书进行签名

操作系统(Windows, Linux, Unix, Android, iOS等)预置了许多信任的根证书。由于费用原因,我们需要自建CA机构来给我们的证书进行签名。

1. 创建CA私钥
bash 复制代码
openssl.exe genrsa -out c:/dev/myca.key 2048
2. 生成CA待签名证书
bash 复制代码
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
3. 生成CA根证书
bash 复制代码
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out c:/dev/myca.crt
4. 对服务器证书签名

对生成的服务端待签名证书(.csr)进行签名:

bash 复制代码
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt

生成内容清单:

myca.key:CA机构私钥

myca.csr:CA机构待签名证书

myca.crt:CA机构证书,即根证书

server.crt:服务器证书,被CA机构签名过的证书

04. Nginx配置

将生成好的服务端证书上传到服务器指定目录,并在Nginx中进行配置:

bash 复制代码
server {
    listen       443 ssl;
    server_name  aa.abc.com;

    ssl_certificate      /data/cert/server.crt;
    ssl_certificate_key  /data/cert/server.key;
}

添加信任

在当前系统中安装证书。

通过上述步骤,我们可以实现HTTPS的完整流程,确保数据传输的安全性,满足现代互联网应用的需求。

相关推荐
Henry Zhu1233 分钟前
VPP中进程同步模块:RPC机制详解
网络协议·rpc
奋进的电子工程师26 分钟前
软件定义汽车的背后:一场架构的“深层次革命”
网络协议·系统架构·汽车·安全威胁分析·安全架构
中杯可乐多加冰32 分钟前
openEuler网络优化:TCP/IP协议栈性能深度测评
网络·网络协议·tcp/ip·计算机网络·openeuler
虎头金猫34 分钟前
openEuler 22.03 LTS 时序数据库实战:InfluxDB 深度性能评测与优化指南
网络·数据库·python·网络协议·tcp/ip·负载均衡·时序数据库
Yan-英杰35 分钟前
openEuler 数据库性能深度评测:PostgreSQL 全方位压测
网络·人工智能·网络协议·tcp/ip·http
bing.shao36 分钟前
Golang HTTP Restful 接口鉴权设计
http·golang·restful
游戏开发爱好者836 分钟前
以 uni-app 为核心的 iOS 上架流程实践, 从构建到最终提交的完整路径
android·ios·小程序·https·uni-app·iphone·webview
小曹要微笑1 小时前
HTTP与WebSocket协议深度解析
websocket·网络协议·http·js
飞行增长手记1 小时前
了解真实属性,从4个核心维度选对静态住宅IP
网络·网络协议·tcp/ip
会头痛的可达鸭1 小时前
HTTP 请求报文详解
网络·网络协议·http