文章目录
前言
把原来的http请求改造为https
1. 使用SSL对流量进行加密
HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS加密数据包,确保数据的安全性。
SSL(Secure Sockets Layer)安全套接层
TLS(Transport Layer Security)传输层安全
TLS和SSL在传输层和应用层对网络连接进行加密
Nginx要使用SSL,需要添加模块–with-http_ssl_module,该模块在编译的过程中需要OpenSSL的支持
》将原有/usr/local/nginx/sbin/nginx进行备份
》拷贝nginx之前的配置信息
》在nginx的安装源码进行配置指定对应模块 ./configure --with-http_ssl_module
》通过make模板进行编译
》将objs下面的nginx移动到/usr/local/nginx/sbin下
》在源码目录下执行 make upgrade进行升级,这个可以实现不停机添加新模块的功能
2. nginx配置项
2.1 ssl
用来在指定的服务器开启HTTPS,可以使用 listen 端口号 ssl
,https默认端口443
2.2 ssl_certificate
为当前虚拟主机指定一个带有PEM格式证书的证书
2.3 ssl_certificate_key
用来指定PEM secret key文件的路径
3. 使用openssl生成证书
3.1 确认系统是否安装openssl
openssl version
3.2 生成证书
mkdir /usr/local/nginx/conf/cert
cd /usr/local/nginx/conf/cert
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
4. 生产实例
server {
listen 1443 ssl;
server_name localhost;
ssl_certificate cert/server.crt;
ssl_certificate_key cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}