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博客

相关推荐
ITyunwei098714 分钟前
团队管理与人才发展:如何打造一支“召之即来,来之能战”的铁军?
大数据·运维·人工智能
白緢34 分钟前
一、Linux 基础入门
linux·运维·服务器
Deepoch37 分钟前
面向工业现场自主运维:Deepoc 具身模型开发板的端侧智能升级路径
运维·人工智能·科技·巡检机器人·deepoc
菜菜艾1 小时前
自动化环境补丁更新系统
linux·运维·bash·运维开发
江上清风山间明月1 小时前
Nginx基于域名区分的多网站部署
运维·nginx·部署·php·多个网站
随风,奔跑1 小时前
Nginx
服务器·后端·nginx·web
团象科技2 小时前
2026出海趋势观察:国际云服务器推荐重构企业全球化经营底盘
运维·服务器·重构
Elastic 中国社区官方博客2 小时前
Elastic 9.4:Workflows 正式发布、Agent Builder 更新,以及 Prometheus / PromQL 支持
运维·数据库·人工智能·elasticsearch·搜索引擎·信息可视化·prometheus
徐子元竟然被占了!!3 小时前
STUN 协议
运维
mzhan0174 小时前
Linux: coredump产生对程序退出的影响
linux·运维·服务器