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; } }