Nginx高级之HTTPS服务

版权声明:原创文章, 欢迎转载. https://blog.csdn.net/ip_JL/article/details/84514643

高级阶段回顾:

Nginx高级之Rewrite规则

Nginx高级之高级模块(secure_link/secure_link_md5/geoip_module)

HTTPS原理

HTTPS协议较为安全的原因就是对数据进行了加密传输.

两种加密方式:

① 对称加密: 加密密钥和解密密钥是一样的

② 非对称加密: 加密密钥和解密密钥是不一样的(分为公钥和私钥)

HTTPS协议同时用到了这两种加密方式:

中间人伪装成客户端或者服务端劫持:

注: HTTPS之所以安全性高, 在于它能够生成CA签名证书, 该证书确保中间人无法获取到该证书, 所以提高了数据传输的安全性.

生成密钥和CA证书

准备工作: 确认已经安装nginx和openssl

安装nginx请参考我的nginx系列第一篇: Nginx基础之简介与快速安装

yum安装openssl: yum install openssl 和 yum install openssl openssl-devel

确认是否已安装:

步骤一: 生成RSA密钥

生成密钥命令: openssl genrsa -idea -out [密钥文件名称] 1024

在这个过程中需要输入密码(自定义, 但需要记住, 下面的步骤需要提示输入该密码)

步骤二: 生成证书签名请求文件(CSR文件)

生成CSR文件命令: openssl req -new -key [密钥文件名称] -out [CSR文件名称]

输入相关信息即可:

步骤三: 生成证书签名文件(CA文件)

生成签名文件命令: openssl x509 -req -days 3650 -in [CSR文件名称] -signkey [密钥文件名称] -out [生成的CRT文件名称] 

配置HTTPS服务

是否开启服务端的相应:

systax: ssl on | off;

default: ssl off;

context: http域/server域

ssl的证书文件

systax: ssl_certificate file;

default: 无配置

context: http域/server域

ssl的证书密码文件

systax: ssl_certificate_key file;

default: 无配置

context: http域/server域

进入default.conf文件进行配置: https协议的默认端口时443

配置苹果要求的证书

准备工作:

① 服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)

② HTTPS证书必须使用SHA256以上哈希算法签名

③ HTTPS证书必须使用RSA 2048位或ECC 256位以上公钥算法

④ 使用前向加密技术

升级openssl:

查看openssl的版本命令: openssl + version

如果需要升级, 请按下面的步骤:

cd /opt/opensslDownload
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config --prefix=/usr/local/openssl
make && make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
ldconfig -v
openssl version -a

将以上代码写入一个.sh的文件, 执行该文件 sh ./[.sh文件的文件名称]

结果:

由key密钥直接生成CRT签名:

命令: openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout [密钥文件名称] -out [生成的CRT文件名称]

进入default.conf配置:

引用New-Milky-Way.crt文件

重启nginx: 访问https://ip/

注: 是使用https://访问而不是http://访问.

HTTPS服务的优化

① 激活keepalive长连接

② 设置ssl session缓存

default.conf的配置:

猜你喜欢

转载自blog.csdn.net/ip_JL/article/details/84514643