nginx启动更为安全的tls1.3怎么用
发布时间:2021-12-16 19:53:21 所属栏目:安全 来源:互联网
导读:这篇文章给大家分享的是有关nginx开启更为安全的tls1.3怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 我这里用的系统是Debian 8 第一步:安装依赖 $ apt-get install git gcc make build-essential zlib1g-dev libpcr
这篇文章给大家分享的是有关nginx开启更为安全的tls1.3怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 我这里用的系统是Debian 8 第一步:安装依赖 $ apt-get install git gcc make build-essential zlib1g-dev libpcre3-dev 第二步:下载源码和补丁 $ mkdir -p /usr/src $ cd /usr/src $ git clone git://git.openssl.org/openssl.git openssl $ git clone https://github.com/hakasenyang/openssl-patch.git openssl-patch $ git clone https://github.com/kn007/patch.git nginx-patch $ wget https://nginx.org/download/nginx-1.15.0.tar.gz $ tar zxvf ./nginx-1.15.0.tar.gz 第三步:打补丁 1,给OpenSSL打补丁,补丁的意义在于使OpenSSL支持最新的TLS1.3. 补丁地址:https://github.com/hakasenyang/openssl-patch $ cd /usr/src/openssl $ patch -p1 < ../openssl-patch/openssl-equal-pre8_ciphers.patch 2,给Nginx打补丁,nginx 补丁添加SPDY支持,添加HTTP2 HPACK编码支持,添加动态TLS记录支持 补丁地址:https://github.com/kn007/patch fix_nginx_hpack_push_error 补丁修复nginx的http2 push和http2 hpack兼容性问题 nginx_auto_using_PRIORITIZE_CHACHA 补丁添加在使用OpenSSL1.1.1时SSL_OP_PRIORITIZE_CHACHA的支持。 $ cd /usr/src/nginx-1.15.0 $ patch -p1 < ../nginx-patch/nginx.patch $ patch -p1 < ../nginx-patch/fix_nginx_hpack_push_error.patch $ patch -p1 < ../nginx-patch/nginx_auto_using_PRIORITIZE_CHACHA.patch 第四步:编译安装 $ ./configure --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --with-openssl=../openssl --with-http_v2_module --with-http_v2_hpack_enc --with-http_spdy_module --with-http_ssl_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log $ make $ make install Nginx的可执行文件安装在/usr/sbin/,Nginx配置文件在/etc/nginx/里 第五步:配置 1,修改Nginx全局配置: 将以下内容填入:/etc/nginx/nginx.conf worker_processes auto; pid /var/run/nginx.pid; error_log /var/log/nginx/error.log; events { use epoll; multi_accept on; worker_connections 1024; } http { charset utf-8; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; gzip on; gzip_vary on; gzip_proxied any; gzip_min_length 1k; gzip_buffers 4 8k; gzip_comp_level 2; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml; include /etc/nginx/vhost/*.conf; } 2,修改Nginx站点配置 我们已经在全局配置里设置了包含/etc/nginx/vhost/目录下的conf文件 $ mkdir -p /etc/nginx/vhost 在然后/etc/nginx/vhost/里创建站点配置,这里统一用“域名”文字代替真实域名 server { listen 80; server_name 域名; root /wwwroot/域名; location / { index index.html; } } 这样HTTP的站点配置就弄好了,不过还站点还没页面,我们可以先把Nginx的欢迎页面给放进去 mkdir -p /wwwroot/域名 $ cp /usr/local/nginx/html/index.html /wwwroot/域名/ $ nginx 启动Nginx后HTTP页面就正常了,打开就能看到欢迎页面。 第六步:签发证书 配置HTTPS首先要有证书,我这里是使用acme.sh自动颁发让我们加密的证书 1,安装工具: apt-get install cron socat 2,获取acme.sh: curl https://get.acme.sh | sh 3, 复制证书: 证书已经签发,保存在~/.acme.sh/里 $ acme.sh --ecc --installcert -d 域名 --key-file /etc/nginx/ssl/域名.key --fullchain-file /etc/nginx/ssl/域名.cer --reloadcmd "nginx -s reload" 指定域名,指定证书保存目录,我这里设置在/etc/nginx/ssl/,指定Nginx重载命令,如果签发的不是ECC证书,把--ecc参数去掉 这样使用acme.sh就完成了证书的签发,如果证书快要过期了,脚本会自动更新证书 脚本自动更新,可以使用以下命令 $ acme.sh --upgrade --auto-upgrade 第七步:HTTPS站点配置 我给OpenSSL打的是pre8_ciphers补丁,所以配置文件如下: server { listen 80; server_name 域名; return 301 https://域名$request_uri; } server { listen 443 ssl http2; server_name 域名; root /wwwroot/域名; ssl_certificate /etc/nginx/ssl/域名.cer; ssl_certificate_key /etc/nginx/ssl/域名.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]:[EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES; ssl_ecdh_curve X25519:P-256:P-384; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl_session_tickets on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security max-age=15768000; location / { index index.html; http2_push /style.css; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ico)$ { expires 30d; } location ~ .*.(js|css)?$ { expires 15d; } location ~ /.git/ { deny all; } } 以上就是完整的站点配置文件,覆盖/etc/nginx/vhost/域名.conf后,使用nginx -s reload重载Nginx再打开站点就能看到HTTPS的页面了 感谢各位的阅读!关于“nginx开启更为安全的tls1.3怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧! (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |