Linux系统操作——Nginx使用OpenSSL实现https转发

目录

一、OpenSSL创建自签名证书

1、下载安装OpenSSL

2、创建自签名的SSL证书和私钥

3、转换成.jks文件

二、配置Nginx

1、配置方法一:http和https同时监听,自动跳转https;

2、配置方法二:http自动跳转https;

3、配置方法三:http,https同时可访问;

三、开放443端口


一、OpenSSL创建自签名证书

1、下载安装OpenSSL

下载地址:https://www.openssl.org/source/

下载完成后上传到linux服务器上。

【安装OpenSSL】

复制代码
tar -xzf openssl-1.1.1d.tar.gz

cd openssl-1.1.1d

mkdir /usr/local/openssl

./config --prefix=/usr/local/openssl

make

make install

【创建软连接】

复制代码
which openssl 
#/usr/bin/openssl

#为了使用方便,以及以后版本更新方便,可以创建软连接,如下:
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
#如果报异常,可以忽略

【列出动态库依赖关系】

复制代码
cd /usr/local/openssl

ldd /usr/local/openssl/bin/openssl

【查看版本】

复制代码
openssl version

2、创建自签名的SSL证书和私钥

【生产私钥(key文件)】

复制代码
# -genra    生成RSA私钥
# -des3 des3算法
# -out server.key 生成的私钥文件名
# -2048 私钥长度
#输入一个4位以上的密码。

openssl genrsa -des3 -out server.pass.key 2048

【去除私钥中的密码】

复制代码
openssl rsa -in server.pass.key -out server.key

#说明:有密码的私钥是server.pass.key,没有密码的私钥是server.key

在第6步创建私钥的过程中,必须要指定一个密码,为了便于使用所以要删除私钥中的密码。

【生成CSR(证书签名请求)】

复制代码
# -req 生成证书签名请求
# -new 新生成
# -key 私钥文件
# -out 生成的CSR文件
# -subj 生成CSR证书的参数
# 参数说明:/C 是国家,/ST 是省份,/L 是城市,/O 是企业,/OU 是部门,/CN 是域名或ip

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=JiangXi/L=YingTan/O=cetc/OU=cetc/CN=gitlab.cetc.cn"

【生成自签名SSL证书】

复制代码
# -days 证书有效期
#X.509证书包含三个文件:key,csr,crt。

#openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

#说明:

  • key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
  • csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
  • crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有的公钥,以及签署者的签名等信息 备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。

3、转换成.jks文件

【转还成pfx】

复制代码
 openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

#说明:

其中:server.pfx (转后的pfx)mycert.key,mycert.crt( crt和key格式的证书)

注意:该步骤需要输入密码passward,该密码2与3均需要用到

【查看证书别名】

复制代码
 keytool -list -v -keystore server.pfx

【转为jks】

复制代码
keytool -importkeystore -srckeystore  server.pfx -srcstoretype pkcs12 -destkeystore mycert.jks -deststoretype JKS  -alias 1

#说明:

其中:-alias(设置别名) mycert.jks(转还后jks) server.pfx(需转还的pfx)

注意:该步骤需要输入3次密码,均采用1中的passward。

二、配置Nginx

配置中的

1、配置方法一:http和https同时监听,自动跳转https;

复制代码
	server {
        listen       80;
		listen       443 ssl;
        server_name www.xxx.com xxx.com; #填写绑定证书的域名
        #ssl on;
        ssl_certificate 1_www.xxx.com_bundle.crt; #证书在conf文件同级,根据实际位置修改
        ssl_certificate_key 2_www.xxx.com.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;
 
		location / {
			proxy_pass http://127.0.0.1:8081; #转发到本机项目端口
        }
 
    }

2、配置方法二:http自动跳转https;

复制代码
	server {
        listen       80;
        server_name  api.xxx.com;
		
		#rewrite ^(.*) https://$server_name$1 permanent; #自动跳转到https
    }
	
	server {
		listen       443 ssl;
        server_name api.xxx.com; #填写绑定证书的域名
        #ssl on; #新版本不需要配置,否则有警告
        ssl_certificate 1_xx.com_bundle.crt;#根据实际crt位置修改
        ssl_certificate_key 2_xx.com.key;#根据实际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;
 
		location / {
			proxy_redirect off;
			proxy_set_header Host $host;
			proxy_set_header X-Real-Ip $remote_addr;
			proxy_set_header X-Forwarded-For $remote_addr;
			
			proxy_pass http://127.0.0.1:9000;
        }
 
    }

3、配置方法三:http,https同时可访问;

复制代码
	server {
        listen       80;
        server_name  api.xxx.com;
 
        location / {
            proxy_redirect off;
			proxy_set_header Host $host;
			proxy_set_header X-Real-Ip $remote_addr;
			proxy_set_header X-Forwarded-For $remote_addr;
			
			proxy_pass http://127.0.0.1:8080;#根据实际ip地址修改
        }
		
    }
	
	server {
		listen       443 ssl;
        server_name api.xxx.com; #填写绑定证书的域名
        #ssl on;
        ssl_certificate 1_xxx.com_bundle.crt;#根据实际crt位置修改
        ssl_certificate_key 2_xxx.com.key;#根据实际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;
 
		location / {
			proxy_redirect off;
			proxy_set_header Host $host;
			proxy_set_header X-Real-Ip $remote_addr;
			proxy_set_header X-Forwarded-For $remote_addr;
			
			proxy_pass http://127.0.0.1:8080;#根据实际ip地址修改
        }
 
    }

三、开放443端口

查看443端口是否开放

复制代码
firewall-cmd --zone=public --query-port=443/tcp 

返回yes表示已开启

Linux系统操作------开放443端口-CSDN博客

相关推荐
用户0328472220701 天前
如何搭建本地yum源(上)
运维
ping某2 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
程序员mine4 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造