nginx 09-Nginx部署https

部署https背景

  • http不安全
  • 传输数据被中间人盗用、信息泄露
  • 数据内容劫持、篡改

https协议的实现

  • 对传输内容进行加密以及身份验证

对称加密

非对称加密

(相对复杂,对性能有一定损耗 )

https加密协议原理

(先非对称加密,后进行对称加密传输数据)

生成密钥和CA证书

openssl version
nginx -V
(包含模块:--with-http_ssl_module)

1、生成key密钥

openssl genrsa -idea -out /etc/nginx/ssl_key/test.key 1024
设置密码

2、生成证书签名请求文件(csr文件)

openssl req -new -key /etc/nginx/ssl_key/test.key -out /etc/nginx/ssl_key/test.csr
输入相关信息

3、生成证书签名文件(CA文件)

openssl x509 -req -days 3650 -in /etc/nginx/ssl_key/test.csr -signkey /etc/nginx/ssl_key/test.key -out /etc/nginx/ssl_key/test.crt 
输入设置密钥的密码

nginx的https语法配置

ssl on|off;
(http、server)
ssl_certificate file;
(http、server)
ssl_certificate_key file;
(http、server)

配置案例

server {
    listen 443;
    server_name 192.168.10.10 www.test.com;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl_key/test.crt ;
    ssl_certificate /etc/nginx/ssl_key/test.key;
    
    index index.html index.htm;
    location / {
        root /opt/app/code;
    }
}

https服务优化

  • 激活keepalive长连接
keepalive_timeout 100;
  • 设置ssl session缓存
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

场景--配置苹果要求的证书

  • 服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
  • https证书必须使用SHA256以上哈希算法签名
  • https证书必须使用RSA 2048位或ECC 256位以上公钥算法
  • 使用前向加密技术

更新openssl脚本

cat update_openssl.sh

#!/bin/sh
cd /opt/download
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/opensslbak
mv /usr/include/openssl /usr/include/opensslbak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openss
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
openssl version -a

直接生成证书签名文件(CA文件)

openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout /etc/nginx/ssl_key/test.key -out /etc/nginx/ssl_key/test_apple.crt
输入相关信息

配置案例

server {
    listen 443;
    server_name 192.168.10.10 www.test.com;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl_key/test_apple.crt;
    ssl_certificate /etc/nginx/ssl_key/test.key;
    
    index index.html index.htm;
    location / {
        root /opt/app/code;
    }
}
原文地址:https://www.cnblogs.com/liangjingfu/p/10677625.html