您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)nginx開啟更為安全的tls1.3怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
我這里用的系統(tǒng)是Debian 8
第一步:安裝依賴
$ apt-get install git gcc make build-essential zlib1g-dev libpcre3-dev
第二步:下載源碼和補(bǔ)丁
$ 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
第三步:打補(bǔ)丁
1,給OpenSSL打補(bǔ)丁,補(bǔ)丁的意義在于使OpenSSL支持最新的TLS1.3.
補(bǔ)丁地址:https://github.com/hakasenyang/openssl-patch
$ cd /usr/src/openssl
$ patch -p1 < ../openssl-patch/openssl-equal-pre8_ciphers.patch
2,給Nginx打補(bǔ)丁,nginx 補(bǔ)丁添加SPDY支持,添加HTTP2 HPACK編碼支持,添加動(dòng)態(tài)TLS記錄支持
補(bǔ)丁地址:https://github.com/kn007/patch
fix_nginx_hpack_push_error 補(bǔ)丁修復(fù)nginx的http2 push和http2 hpack兼容性問(wèn)題
nginx_auto_using_PRIORITIZE_CHACHA 補(bǔ)丁添加在使用OpenSSL1.1.1時(shí)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的可執(zhí)行文件安裝在/usr/sbin/,Nginx配置文件在/etc/nginx/里
第五步:配置
1,修改Nginx全局配置:
將以下內(nèi)容填入:/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站點(diǎn)配置
我們已經(jīng)在全局配置里設(shè)置了包含/etc/nginx/vhost/目錄下的conf文件
$ mkdir -p /etc/nginx/vhost
在然后/etc/nginx/vhost/里創(chuàng)建站點(diǎn)配置,這里統(tǒng)一用“域名”文字代替真實(shí)域名
server {
listen 80;
server_name 域名;
root /wwwroot/域名;
location / {
index index.html;
}
}
這樣HTTP的站點(diǎn)配置就弄好了,不過(guò)還站點(diǎn)還沒頁(yè)面,我們可以先把Nginx的歡迎頁(yè)面給放進(jìn)去
mkdir -p /wwwroot/域名
$ cp /usr/local/nginx/html/index.html /wwwroot/域名/
$ nginx
啟動(dòng)Nginx后HTTP頁(yè)面就正常了,打開就能看到歡迎頁(yè)面。
第六步:簽發(fā)證書
配置HTTPS首先要有證書,我這里是使用acme.sh自動(dòng)頒發(fā)讓我們加密的證書
1,安裝工具:
apt-get install cron socat
2,獲取acme.sh:
curl https://get.acme.sh | sh
3,生成證書:
使用http方式驗(yàn)證域名,這是我們先搭建HTTP站點(diǎn)的原因,接下來(lái)指定域名,指定站點(diǎn)目錄,開始簽發(fā)
acme.sh --issue -d 域名 --webroot /wwwroot/域名/ --keylength ec-256 --nginx
4,復(fù)制證書:
證書已經(jīng)簽發(fā),保存在~/.acme.sh/里
$ acme.sh --ecc --installcert -d 域名 \
--key-file /etc/nginx/ssl/域名.key \
--fullchain-file /etc/nginx/ssl/域名.cer \
--reloadcmd "nginx -s reload"
指定域名,指定證書保存目錄,我這里設(shè)置在/etc/nginx/ssl/,指定Nginx重載命令,如果簽發(fā)的不是ECC證書,把--ecc參數(shù)去掉
這樣使用acme.sh就完成了證書的簽發(fā),如果證書快要過(guò)期了,腳本會(huì)自動(dòng)更新證書
腳本自動(dòng)更新,可以使用以下命令
$ acme.sh --upgrade --auto-upgrade
第七步:HTTPS站點(diǎn)配置
我給OpenSSL打的是pre8_ciphers補(bǔ)丁,所以配置文件如下:
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;
}
}
以上就是完整的站點(diǎn)配置文件,覆蓋/etc/nginx/vhost/域名.conf后,使用nginx -s reload重載Nginx再打開站點(diǎn)就能看到HTTPS的頁(yè)面了
感謝各位的閱讀!關(guān)于“nginx開啟更為安全的tls1.3怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。