ngx_http_ssl_module模塊說明


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

none: 通知客戶端支持ssl session cache,但實際不支持

builtin[:size]:使用OpenSSL內建緩存,為每worker進程私有

[shared:name:size]:在各worker之間使用一個共享的緩存

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM