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
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
I have a dream so I study hard!!!