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

这篇具有很好参考价值的文章主要介绍了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博客文章来源地址https://www.toymoban.com/news/detail-782150.html

到了这里,关于Linux系统操作——Nginx使用OpenSSL实现https转发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用nginx提供https端点,实现不修改浏览器地址(不触发重定向)转发网络流量,附生成自签ssl证书最简单的方法(2个命令)

    近日笔者需要实现一个网络流量转发的需求。要求很简单:将浏览器的请求转发到一个指定的域名,需要提供一个https端口并且把http端口转发到https端口。由于笔者对nginx的认知有限,因此磕磕绊绊研究了一阵,将结果写出来,以供其他有类似需求的同学参考对照。 nginx的官方

    2024年02月08日
    浏览(52)
  • Linux升级openssl版本、安装nginx并配置https证书支持TLSv1.3

    参考文章 https://blog.csdn.net/weixin_43153854/article/details/109823633?utm_medium=distribute.pc_relevant.none-task-blog-2 default baidujs_baidulandingword~default-4-109823633-blog-106643510.pc_relevant_default_base2spm=1001.2101.3001.4242.3utm_relevant_index=7 参考文章 https://blog.csdn.net/t8116189520/article/details/81909574

    2024年02月14日
    浏览(31)
  • lua使用resty.http做nginx反向代理(https请求,docker容器化部署集群),一个域名多项目转发

    下载使用 链接:https://pan.baidu.com/s/1uQ7yCzQsPWsF6xavFTpbZg 提取码:htay –来自百度网盘超级会员V5的分享 ad_load.lua文件

    2024年01月18日
    浏览(52)
  • windows 上配置 nginx 转发 https

    工作环境中,使用云桌面(win10)进行开发,云桌面的环境有些拉跨,现在将部分能在本地电脑上完成的作业,进行转移,现在对 WebSphere 的使用,移植到本地电脑中进行,这时就需要在云桌面中安装 ngixn 软件,修改相关配置。 在本地电脑登录 WebSphere 是不可以的,在云桌面中登

    2023年04月16日
    浏览(34)
  • openssl生成https证书及nginx https配置

    一、nginx根目录下创建 cert 目录,用于存放https证书 二、openssl生成https证书证书 三、nginx配置https 参考文档:         https://blog.51cto.com/u_481814/1835713         https://www.cnblogs.com/caidingyu/p/11904277.html

    2024年02月10日
    浏览(27)
  • nginx配置websocket或https的转发教程

    1、把普通的IP访问改为自己的域名,例如我们希望的域名是mywebsocket.test.com,那么前端页面配置的地址如下 2、页面的DEMO如下,比较简单 3、nginx的配置如下 4、nginx命令,每次nginx.conf修改后,需要重新reload

    2024年02月11日
    浏览(35)
  • nginx 如何将 https 请求转发到 http

    网站之前是 https 的,通过 nginx 设置好了,现在不想用 https 了,但发散到外界的一些网址还是 https 的,此时只能通过 nginx 去转发 https 请求到 http 才能实现之前的链接能正常访问。 具体设置如下: https 的其它设置不需要动,只需要在 server 字段添加一条:

    2024年02月11日
    浏览(41)
  • nginx如何代理转发第三方https网站

    这里准备官方nginx镜像 上诉示例中,如果是https,proxy_ssl_session_reuse ,proxy_ssl_server_name ,这两个没有会报ssl SSL_do_handshake() failed SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 127.0.0.1, server: 127

    2024年02月13日
    浏览(41)
  • nginx负载转发源请求http/https:X-Forwarded-Proto及nginx中的转发报头

    今天在排查服务器的问题时最后定位到服务器因为经过了运维这一层的处理,转发过来的请求不管用户请求的是https还是http,我们的proxy服务器收到的都是80端口上的http。于是联系相关部门了解有没有现成的可用的这样一个字段来获得这个值。公司用的也是标准报头,即X-Fo

    2024年02月16日
    浏览(46)
  • Nginx转发http到https和开机自动启动

    场景: 以下都是基于windows系统(ip为虚构) 1.ip:172.16.54.55需要访问172.16.54.57的接口服务,来查看机械臂的运行状况 2.存在网络隔离,172.16.54.55无法直接访问172.16.54.57 3.172.16.54.56与172.16.54.57是机械臂厂商搞得内部网络,彼此可以互通 4.172.16.54.55与172.16.54.56是外部网络,彼此可以

    2023年04月25日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包