nginx配置https操作指引

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

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

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

在这里插入图片描述


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"

参数说明

  • -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

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

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

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;

重载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;
	}
}

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/

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

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

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

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

修改完重启

#修改每一个api的配置文件中,配置了代理服务器地址的配置项,例如:
auth-api.rootUrl=http://192.168.11.55:8443/auth-api

#要改成:
auth-api.rootUrl=https://gov.bizpro.cn:8443/auth-api
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值