如果出现 --with-http_ssl_module 就是已经安装了
#通过查看nginx版本,确认是否包含http_ssl_module 模块
nginx -V

证书存放目录: /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
找到 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。
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 到这就结束了
将生成好的证书文件 HostDomain.cer 上传到每一部应用服务器中, 进行修改,然后导入到jdk的可信任证书列表,避免报错。
# 密码自改
keytool -keystore cacerts -importcert -alias bizpro -file HostDomain.cer -storepass ******
# 拷贝cacerts 文件到jdk目录中
cp cacerts $JAVA_HOME/jre/lib/security/
修改应用服务器中的hosts文件,将证书中的域名和IP地址配置进去。例如 vi /etc/hosts
# 代理服务器的IP地址, 证书中的域名地址
192.168.11.55 gov.bizpro.cn
修改完重启
#修改每一个api的配置文件中,配置了代理服务器地址的配置项,例如:
auth-api.rootUrl=http://192.168.11.55:8443/auth-api
#要改成:
auth-api.rootUrl=https://gov.bizpro.cn:8443/auth-api