Nginx配置Https自定义签名证书

Nginx配置Https自定义签名证书

1、查看Nginx的ssl模块是否安装,没有则自行下载安装

详细参考:
https://www.cnblogs.com/echohye/p/16722833.html
./nginx -V

在这里插入图片描述

二、任意找一台带有openssl机器生成ssl证书

openssl在centos中是标配,所以直接在centos中操作,因为要多个域名和IP,故而需要编辑一个配置文件

1.创建配置文件req.cnf


# 定义输入用户信息选项的"特征名称"字段名,该扩展字段定义了多项用户信息。
distinguished_name = req_distinguished_name

# 生成自签名证书时要使用的证书扩展项字段名,该扩展字段定义了要加入到证书中的一系列扩展项。
x509_extensions = v3_req

# 如果设为no,那么 req 指令将直接从配置文件中读取证书字段的信息,而不提示用户输入。
prompt = no

[req_distinguished_name]
#国家代码,一般都是CN(大写)
C = CN
#省份
ST = gd
#城市
L = gz
#企业/单位名称
O = echohye
#企业部门
OU = echohye
#证书的主域名
CN = 192.168.11.111

##### 要加入到证书请求中的一系列扩展项 #####
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[ alt_names ]
IP.1 = 192.168.11.111
# IP.2 = 192.168.11.222

Nginx配置Https自定义签名证书_第1张图片

2、执行命令,生成server.crt和server.key两个文件,放在更改https主机的一个目录下


openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt -config req.cnf -sha256

openssl 命令参数说明

 req          大致有3个功能:生成证书请求文件、验证证书请求文件和创建根CA
-x509        说明生成自签名证书
-nodes       openssl req在自动创建私钥时,将总是加密该私钥文件,并提示输入加密的密码。可以使用"-nodes"选项禁止加密私钥文件。
-days        指定所颁发的证书有效期。
-newkey      实际上,"-x509"选项和"-new"或"-newkey"配合使用时,可以不指定证书请求文件,它在自签署过程中将在内存中自动创建证书请求文件
              "-newkey"选项和"-new"选项类似,只不过"-newkey"选项可以直接指定私钥的算法和长度,所以它主要用在openssl req自动创建私钥时。
rsa:2048     rsa表示创建rsa私钥,2048表示私钥的长度。
-keyout      指定私钥保存位置。
-out         新的证书请求文件位置。
-config      指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用/etc/pki/tls/openssl.cnf中req段落的值

Nginx配置Https自定义签名证书_第2张图片

三、服务器端配置证书(nginx)

例:在 nginx 的配置文件下,新建一个监听443的 server,主要修改两个server的域名

http{
   
 
    server{
   
        listen 443;
        #对应你的域名
        server_name test.com;
        #ssl on;
        ssl_certificate /usr/local/nginx/cert/ssl.crt;
        ssl_certificate_key /usr/local/nginx/cert/ssl.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        #如果是静态文件,直接指向目录,如果是动态应用,用proxy_pass转发一下
        location / {
   
                root /usr/local/service/ROOT;
                index index.html;
        }
        location xxx {
   
                root /usr/local/service/ROOT;
                index index.html;
        }
        location xxx {
   
                root /usr/local/service/ROOT;
                index index.html;
        }
    }
    #监听80端口,并重定向到443
    server{
   
        listen 80;
        #server_name test.com;
        rewrite ^/(.*)$ https://test.com:443/$1 permanent;
    }
}

项目实战案例:
如果有两个server,都需要配置ssl证书

#----------------------------------------
# main config begin
#----------------------------------------
#user  xwtech;
worker_processes auto;
worker_rlimit_nofile 65535;
events {
   
    use epoll;
    worker_connections 65535;
    multi_accept on;
}
#----------------------------------------
# main config end
#----------------------------------------
#----------------------------------------
# stream config begin
#----------------------------------------
#stream {
   
#    upstream powerjob1 {
   
#        server 192.168.92.2:7770;
#    }

#    server {
   
#        listen 7770;
#        proxy_pass powerjob1;
#    }
#}
#----------------------------------------
# stream config end
#----------------------------------------
#----------------------------------------
# http config begin
#----------------------------------------
http {
   
    include mime.types;
    default_type application/octet-stream;
    charset UTF-8;
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
 
    reset_timedout_connection on;
    fastcgi_intercept_errors on;
 
    client_body_timeout 100;
    client_header_timeout 100;
    client_max_body_size 20m;
    keepalive_timeout 60;
    send_timeout 100;
    #----------------------------------------
    # gzip config begin
    #----------------------------------------
    gzip on;

你可能感兴趣的:(https,nginx,ssl)