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

相关推荐
半夏知半秋18 小时前
docker常用指令整理
运维·笔记·后端·学习·docker·容器
逆风水手18 小时前
Ansible自动化运维入门指南
linux·运维·自动化·ansible
tianyuanwo18 小时前
SSH会话管理实战:识别与清理非法连接的完整指南
运维·ssh
小豆子范德萨19 小时前
两台window配置SSH免密登录
运维·ssh
小北方城市网19 小时前
第 6 课:Vue 3 工程化与项目部署实战 —— 从本地开发到线上发布
大数据·运维·前端·ai
记得记得就15121 小时前
docker作业
运维·docker·容器
运维行者_21 小时前
OPM 与传统管理工具的区别,在网络修复与自动化运维方面的优势在哪里?
运维·服务器·开发语言·网络·自动化·php·ssl
HaSaKing_7211 天前
EMQX 多机集群部署完整实践(Docker + 社区版 5.8.8)
运维·docker·容器·emqx
南山nash1 天前
企业级docker镜像仓库harbor安装与使用
运维·docker·容器·镜像仓库
云和数据.ChenGuang1 天前
Logstash配置文件的**语法解析错误**
运维·数据库·分布式·rabbitmq·jenkins