使用Nginx搭建HTTPS服务器
实验目的
- 理解数字签名技术的基本原理和CA的定义
- 掌握OpenSSL生成CA数字证书方法。
- 掌握Nginx服务器的搭建以及配置方法。
实验设备
云服务器(ubuntu22.0.4)、Chrome
实验内容
- 安装软件OpenSSL、Nginx
- 使用OpenSSL生成密钥、证书文件
- 配置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 应用协议数据加密然后传输了。