ngx_http_ssl_module模塊主要用於nginx的https協議。
配置參數如下:
Syntax: ssl on | off;
Default:
ssl off;
Context: http, server
為指定虛擬機啟用HTTPS protocol, 建議用listen指令代替
Syntax: ssl_buffer_size size; Default: ssl_buffer_size 16k; Context: http, server This directive appeared in version 1.5.9.
設置用於發送數據的緩沖區的大小。
默認情況下,緩沖區大小為16k,這對應於發送大響應時的最小開銷。為了最大程度地縮短到第一個字節的時間,使用較小的值可能是有益的.
Syntax: ssl_certificate file; Default: — Context: http, server
當前虛擬主機使用PEM格式的證書文件
Syntax: ssl_certificate_key file; Default: — Context: http, server
當前虛擬主機上與其證書匹配的私鑰文件
Syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3]; Default: ssl_protocols TLSv1 TLSv1.1 TLSv1.2; Context: http, server
支持ssl協議版本,默認為后三個版本
Syntax: ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
Default: ssl_session_cache none;
Context: http, server
Syntax: ssl_session_timeout time; Default: ssl_session_timeout 5m; Context: http, server
客戶端連接可以復用ssl session cache中緩存的有效時長,默認5m
配置案例:
server { listen 443 ssl; server_name www.ywx.com; root /vhosts/ssl/htdocs; ssl on;
#新版本中已被"listen 443 ssl;"替代 ssl_certificate /etc/nginx/ssl/nginx.crt; ssl_certificate_key /etc/nginx/ssl/nginx.key; ssl_session_cache shared:sslcache:20m; ssl_session_timeout 10m; }
測試實驗
實驗環境
[root@node1 ~]# uname -r 3.10.0-957.el7.x86_64 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@node1 ~]# nginx -V nginx version: nginx/1.16.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module ip: 10.0.0.101
實驗要求:
可以使用https://10.0.0.101來訪問nginx 注意:該式樣需要在使用nginx的ngx_http_ssl_module
實驗步驟:
1、創建CA和自簽名證書
#1、創建私有CA touch /etc/pki/CA/index.txt #生成證書索引數據庫文件 echo 01 > /etc/pki/CA/serial #指定第一個頒發證書的序列號 #2、CA自簽證書 #生成私鑰 cd /etc/pki/CA/ (umask 066; openssl genrsa -out private/cakey.pem 2048) #生成自簽名證書 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem #3、頒發證書 #在需要使用證書的主機生成證書請求給web服務器生成私鑰 (umask 066; openssl genrsa -out /data/nginx.key 2048) #生成證書申請文件 openssl req -new -key /data/nginx.key -out /data/nginx.csr #將證書請求文件傳輸給CA #CA簽署證書,並將證書頒發給請求者 openssl ca -in /data/nginx.csr -out /etc/pki/CA/certs/nginx.crt -days 100 #注意:默認要求 國家,省,公司名稱三項必須和CA一致 #查看證書中的信息: openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates openssl ca -status SERIAL 查看指定編號的證書狀態
2、nginx安裝部署位nginx-1.16.0的源碼安裝,詳細見《nginx的安裝部署》
3、虛擬主機配置
server { listen 443 ssl; server_name localhost; #ssl on; #在新版本中已經被"listen 443 ssl;"替代 ssl_certificate /etc/pki/CA/certs/nginx.crt; ssl_certificate_key /data/nginx.key; ssl_session_cache shared:sslcache:20m; ssl_session_timeout 10m; location / { root html; index index.html index.htm; } }
4、重新加載nginx配置文件
nginx -t
nginx -s reload
5、訪問測試
在瀏覽器訪問https://10.0.0.101