• nginx配置https操作指引


    1、检查nginx是否包含http_ssl_module 模块

    如果出现 --with-http_ssl_module 就是已经安装了

    #通过查看nginx版本,确认是否包含http_ssl_module 模块
    nginx -V
    
    • 1
    • 2

    在这里插入图片描述


    2、生成证书文件

    证书存放目录: /home/java/nginx/sslfiles

    2.1 直接生成的方式

    # 使用 OpenSSL 命令生成证书文件
    mkdir /home/java/nginx/sslfiles
    cd /home/java/nginx/sslfiles
    #生成文件,使用自定义域名,密码根据需要修改;这里不能用IP地址,否则应用程序会警告
    openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -keyout HostDomain.key -out HostDomain.cer -subj "/CN=gov.bizpro.cn"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参数说明

    • -days:证书的有效时长,单位是day

    • -x509:说明生成自签名证书

    • -nodes:如果指定 -newkey 自动生成秘钥,那么 -nodes 选项说明生成的秘钥不需要加密,即不需要输入 passphase

    • -key:指定已有的秘钥文件生成秘钥请求,只与生成证书请求选项-new配合

    • -newkey-newkey 是与 -key 互斥的,-newkey 是指在生成证书请求或者自签名证书的时候自动生成密钥,然后生成的密钥名称由 -keyout 参数指定。当指定 newkey 选项时,后面指定 rsa:bits 说明产生 rsa 密钥,位数由 bits 指定。 如果没有指定选项 -key-newkey,默认自动生成秘钥

    • rsa:2048:rsa表示创建rsa私钥,2048表示私钥的长度。

    • -keyout:指定私钥保存位置。

    • -out:新的证书请求文件位置。

    • -config:指定req的配置文件,指定后将忽略所有的其他配置文件。如果不指定则默认使用 /etc/pki/tls/openssl.cnf 中req段落的值

    2.2、使用配置文件生产的方式

    创建配置文件 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)
    O = bizpro
    #企业部门, 组织单位 (OU)	
    #OU = bizpro
    #证书的主域名, 公用名 (CN)
    CN = gov.bizpro.cn
    
    ##### 要加入到证书请求中的一系列扩展项 #####
    [v3_req]
    keyUsage = critical, digitalSignature, keyAgreement
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [ alt_names ]
    IP.1 = 192.168.11.55
    # IP.2 = 192.168.11.50
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在放置该文件的目录下执行以下命令

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

    3、修改 nginx.conf 配置文件

    找到 nginx.conf,在对应的配置文件加上两处配置

    # 1、端口后端增加ssl配置,表示该端口是https协议
    listen 8443 ssl;
    # 2、在server中配置证书地址, 生成 cer 和 crt 证书文件都可以
    ssl_certificate /home/java/nginx/sslfiles/server.crt;
    ssl_certificate_key /home/java/nginx/sslfiles/server.key;
    #ssl_certificate /home/java/nginx/sslfiles/HostDomain.cer;
    #ssl_certificate_key /home/java/nginx/sslfiles/HostDomain.key;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    重载nginx。


    4、示例说明(8080为http协议;8443为https协议)

    server {
    	#按实际情况修改; 监听端口 建议80
    	listen 8080;
    	#按实际情况修改; nginx服务器(本机)地址或域名
    	server_name 192.168.11.55;
    	#请求体内容最大 大小
    	client_max_body_size 20m;
    	#请求体缓存 大小
    	client_body_buffer_size 3m;
    	location /license-admin {
    		proxy_pass http://admin-hosts;
    		proxy_set_header Host $host:$server_port;
    		proxy_set_header X-Real-IP $remote_addr;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_connect_timeout 800s;
    		proxy_send_timeout 800s;
    		proxy_read_timeout 800s;
    		error_log /usr/local/nginx/logs/admin_error.log warn;
    		access_log /usr/local/nginx/logs/admin_access.log main;
    	}
    }
     
     
    server {
    	#按实际情况修改; 监听端口 建议443
    	listen 8443 ssl;
    	#按实际情况修改; nginx服务器(本机)地址或域名
    	server_name 192.168.11.55;
    	ssl_certificate /home/java/nginx/sslfiles/server.crt;
    	ssl_certificate_key /home/java/nginx/sslfiles/server.key;
    	#请求体内容最大 大小
    	client_max_body_size 20m;
    	#请求体缓存 大小
    	client_body_buffer_size 3m;
    	 
    	 
    	 
    	#https代理http服务(适用tomcat未配https)
    	location /license-admin/ {
    		proxy_pass http://admin-hosts;
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header Host $http_host;
    		#https代理http(特性配置)
    		proxy_redirect http:// $scheme://;
    		#https代理http(特性配置)
    		port_in_redirect on;
    		#https代理http(特性配置)
    		proxy_set_header X-Forwarded-Proto http;
    		proxy_connect_timeout 800s;
    		proxy_send_timeout 800s;
    		proxy_read_timeout 800s;
    		error_log /usr/local/nginx/logs/admin_ssl_error.log warn;
    		access_log /usr/local/nginx/logs/admin_ssl_ccess.log main;
    	}
    	 
    	#https代理https服务(适用tomcat配有https)
    	location /license-admin-xxx/ {
    		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    		proxy_set_header Host $http_host;
    		proxy_set_header X-Forwarded-Proto https;
    		proxy_redirect off;
    		proxy_pass https://admin-hosts;
    		proxy_connect_timeout 800s;
    		proxy_send_timeout 800s;
    		proxy_read_timeout 800s;
    		error_log /usr/local/nginx/logs/admin_https_error.log warn;
    		access_log /usr/local/nginx/logs/admin_https_ccess.log main;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    ok nginx 配置 https 到这就结束了


    (拓展说明1)应用服务器处理证书

    将生成好的证书文件 HostDomain.cer 上传到每一部应用服务器中, 进行修改,然后导入到jdk的可信任证书列表,避免报错。

    # 密码自改
    keytool -keystore cacerts -importcert -alias bizpro -file HostDomain.cer -storepass ******
    # 拷贝cacerts 文件到jdk目录中
    cp cacerts $JAVA_HOME/jre/lib/security/
    
    • 1
    • 2
    • 3
    • 4

    (拓展说明2)修改应用服务器的hosts

    修改应用服务器中的hosts文件,将证书中的域名和IP地址配置进去。例如 vi /etc/hosts

    # 代理服务器的IP地址, 证书中的域名地址
    192.168.11.55 gov.bizpro.cn
    
    • 1
    • 2

    (拓展说明3)修改应用服务器api中的配置项

    修改完重启

    #修改每一个api的配置文件中,配置了代理服务器地址的配置项,例如:
    auth-api.rootUrl=http://192.168.11.55:8443/auth-api
    
    #要改成:
    auth-api.rootUrl=https://gov.bizpro.cn:8443/auth-api
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    rust的Sync和Send对比
    春运压力如何破?V2X技术来解题
    【spring cloud】(四)服务网关——gateway
    fmllr--学习笔记
    python之requests的高级用法
    【初学Python】Python从入门到精通:一个月就够了~(定制详细的计划)
    类和对象(前)
    vue 自动生成面包屑导航
    [EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略(Matlab代码实现)
    HTML的学习-3|HTML 标签(下)
  • 原文地址:https://blog.csdn.net/weixin_44953227/article/details/126470984