使用Nginx搭建HTTPS服务器

 

实验目的

  1. 理解数字签名技术的基本原理和CA的定义
  2. 掌握OpenSSL生成CA数字证书方法。
  3. 掌握Nginx服务器的搭建以及配置方法。

实验设备

云服务器(ubuntu22.0.4)、Chrome

实验内容

  1. 安装软件OpenSSL、Nginx
  2. 使用OpenSSL生成密钥、证书文件
  3. 配置Nginx的nginx.conf文件,进行SSL配置。

实验步骤

1、安装 OpenSSL 在 Linux 系统中,可以按照以下步骤进行:

打开终端窗口,输入以下命令以更新系统软件包列表:

sudo apt-get update

然后输入以下命令以安装 OpenSSL:

sudo apt-get install openssl

安装完成后,你可以使用以下命令来检查 OpenSSL 是否已经成功安装:openssl version

2、使用OpenSSL生成密钥、证书文件

# Generate an RSA key

openssl genrsa -des3 -out server.key 2048

# Creating Certificate Signing Requests

# 需要输入组织信息,留空输入点(.),而非直接回车(用缺省值)

openssl req -new -key server.key -out cert.csr

# 移除口令

mv server.key server.key.org

openssl rsa -in server.key.org -out server.key

# Signing Your Own Certificates签署自己的证书

openssl x509 -req -days 365 -in cert.csr -signkey server.key -out cert.crt

4、安装nginx

sudo apt-get install nginx

5、配置Nginx配置文件\etc\nginx\nginx.conf

server {

# 监听ssl 443端口

listen 443 default ssl;

# 配置服务名称

server_name server;

# 配置生成文件的目录地址,根据实际情况修改

ssl_certificate /ssl/cert.crt;

ssl_certificate_key /ssl/server.key;

# 设置ssl/tls会话缓存的类型和大小

ssl_session_cache shared:SSL:1m;

# 客户端可以重用会话缓存中ssl参数的过期时间

ssl_session_timeout 5m;

# 选择加密套件

ssl_ciphers HIGH:!aNULL:!MD5;

# 设置协商加密算法时,优先使用我们服务端的加密套件

ssl_prefer_server_ciphers on;

location / {

root /var/www/html;

index index.html index.htm;

}

}

实验报告要求

Nginx安装完成之后,测试其能否正常运行。

SSL配置完成之后使用https访问Nginx服务器,使用Wireshark进行捕包,查看数据包是否使用了SSL协议。提供浏览器、证书以及Wireshark截图。对Wireshark捕获的SSL数据包进行分析。

标题使用二级标题,正文内容使用宋体、小四。

Server hello阶段,服务端返回所选择的协议版本(Version),加密套,压缩算法,随机数,Session ID等,同时将包含自己公钥的证书发送给客户端。

数据传输经过了 SSL 握手后,服务端的身份认证成功,协商出了加密算法为 AES,密钥为 xxxxx(客户端和服务端拿三个随机值用相同算法计算出来的,并没有明文传输)。一切准备就绪。 SSL 握手成功,意味着各种应用层协议都可以加密传输。因此对之前所有握手消息进行散列运算,加密后发送给服务器。。因为这里是 HTTPS,所以可以对 HTTP 应用协议数据加密然后传输了。

posted @ 2023-05-17 20:42  顾旺辉  阅读(393)  评论(0编辑  收藏  举报