web前后端 http转https

1.转换前准备

http转https需要一个证书、本文已ssl证书举例,只有认证的证书才能被认可。阿里云可以申请免费的证书, 但是生成证书需要域名。且域名要绑定ip。故ssl申请前需要域名。可上阿里云购买。

证书申请教程:证书申请

绑定ip:如果没有服务器、也可以用本地ip代替。

 

2.后端spring boot http 转 https

1) 下载对应tomcat证书

2) 将证书移动到spring boot 中的resources文件夹下、配置application.yml或application.properties

application.properties:

#https 端口
server.port: 7001 
#http端口
server.http.port: 7000
# 用的是公司的证书 此处不再提供,请替换成自己的证书
server.ssl.key-store: classpath:xx.pfx
server.ssl.key-store-password: 96XP9E9F
server.ssl.keyStoreType: PKCS12

application.yml

server:port: 9004http:port: 9003ssl:key-store: classpath:XX.pfxkey-store-type: PKCS12enabled: true#密码key-store-password: j0B2b291Dd

3) http的端口自动跳转到https端口

HttpsConfig.java


import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;/*** HTTP自动转向HTTPS的配置**/
@Component
public class HttpsConfig {/***  http的端口*/@Value("${server.http.port}")private int httpPort;/*** https的端口*/@Value("${server.port}")private int httpsPort;@Beanpublic TomcatServletWebServerFactory tomcatServletWebServerFactory() {TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {@Overrideprotected void postProcessContext(Context context) {SecurityConstraint securityConstraint = new SecurityConstraint();securityConstraint.setUserConstraint("CONFIDENTIAL");SecurityCollection securityCollection = new SecurityCollection();securityCollection.addPattern("/*");securityConstraint.addCollection(securityCollection);context.addConstraint(securityConstraint);}};factory.addAdditionalTomcatConnectors(httpConnector());return factory;}@Beanpublic Connector httpConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");connector.setScheme("http");//Connector监听的http的端口号connector.setPort(httpPort);connector.setSecure(false);//监听到http的端口号后转向到的https的端口号connector.setRedirectPort(httpsPort);return connector;}
}

报红是因为当前的域名所对应的ip和服务器ip不一致所致, 将域名对应的IP和服务器ip对应即可解决问题。可通过ping 域名查询域名所对应的地址。

 3.nginx 配置http转https(docker)

nginx.conf


user  nginx;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;server { listen       80;    server_name www.aaa.bbb.fun;rewrite ^(.*)$ https://${server_name}$1 permanent;}server {listen       443 ssl;server_name www.aaa.bbb.fun;ssl_certificate /ssl/6431157_aaa.bbb.fun.pem;ssl_certificate_key /ssl/6431157_aaa.bbb.fun.key;ssl_session_cache           shared:SSL:10m;ssl_session_timeout         5m;ssl_protocols               SSLv3 TLSv1.1 TLSv1.2;ssl_ciphers                 HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;ssl_prefer_server_ciphers   on;location / {proxy_set_header            Host $host;  proxy_set_header            X-real-ip $remote_addr;  proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;  root /usr/share/nginx/html;index  index.html index.htm;add_header Access-Control-Allow-Origin *;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

dokcer运行:

#运行容器
docker run -d  -p 30014:443  --name jsjmh-web -v ~/nginx/jsj/dist:/usr/share/nginx/html -v ~/nginx/jsj/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/jsj/logs:/var/log/nginx -v  ~/nginx/jsj/ssl:/ssl  nginx#运行说明
-v ~/nginx/jsj/dist:/usr/share/nginx/html 静态页面挂载
-v ~/nginx/jsj/conf/nginx.conf:/etc/nginx/nginx.conf 配置文件挂载
-v ~/nginx/jsj/logs:/var/log/nginx 日志挂载
-v  ~/nginx/jsj/ssl:/ssl ssl证书挂载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt开发技巧:编写.pro文件,在构建流程中加入命令行的方法

1、在项目构建前执行命令 在项目构建前执行命令cmd存在问题system(cmd)存在执行多次的问题,可以参考message函数的QMake Manual说明 优化后的表达式如下,这样此命令只会在构建前执行一次: !build_pass:system(cmd) 2、在链接前后执行&#x…

c++清空输入缓冲区_干货 | C++的输入输出方法

C和C并没有将输入与输出实现在语言中,而是在类库中实现。作为C的超集,C继承了C的输入输出方法。同时将输入与输出视为字流。流充当了程序和流源流目标之间的桥梁。本文将介绍C的输入输出方式,并且浅谈C与C均有的输入输出方式对C有一定学习的同…

Qt应用程序发布:Qt应用程序添加版本版权生产商等信息

设置方法 在QMake Manual手册中搜索关于QMAKE_TARGET内容可以看到有如下QMake变量: QMAKE_TARGET_COMPANY:用于指定生产商QMAKE_TARGET_DESCRIPTION:用于描述应用程序QMAKE_TARGET_COPYRIGHT:用于声明版权QMAKE_TARGET_PRODUCT&…

stl源码剖析_STL源码剖析 阅读笔记(二)allocator

一、空间分配器 allocator从使用上看,空间分配在任何语言的任何组件都不需要我们去过多关心,因为语言、组件的底层肯定都比较完整的做了这件事情。从实现上看,学习 allocator 的原理在源码学习中是首当其冲。因为没有空间分配,则无…

easyexcel将对象处理为多列,自增序列

概述 主要记录在开发中遇到的问题:使用easyexcel导出excel,一般数据都是保存在数据库中,如果查询返回的是一个实体类,且里面有嵌套的实体类对象,这时导出的时候要先对查询出的数据进行业务逻辑处理,让它符…

python做excel表格代码_python操作excel表格

我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处…

Windows 查看程序ip地址(面对小白)

前言:Windows自带资源管理器可以查看程序的IP地址。下面以微信通话为例,详细步骤如下(面向小白): 打开任务管理器 打开方法(以下方法都可以): 键盘按住 【ctrl】 【alt】 【delete】 ,选择【任务管理器】Windows 10 以下系统…

【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法

快速解决办法描述描述: 1.将相同命名空间的不同程序集分别进行取别名:【具体操作:右击相同程序的引用,在别名上修改,默认的为global】。 2.调用:在所在调用文件里面最前面写 extern alias 别名,然后using 别名.Names…

chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver

摄影:产品经理产品经理的三文鱼炒饭在《一日一技:如何正确移除Selenium中window.navigator.webdriver的值》一文中,我们介绍了在当时能够正确从Selenium启动的Chrome浏览器中移除window.navigator.webdriver的方法。后来时过境迁,…

【转】2.3async中必须始终返回Task(@Ron.liang)

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章 目录 前言1. 异常的发生来得太突然2. 问题所在3. 问题的解决方案前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙的报…

php隐藏webshell_PHP 安全的十个必备技巧

在这篇文章中,我将尝试为你提供一些可以提高 PHP 应用程序安全性的具体步骤。我关注的是 PHP 配置本身,所以我们不会讨论 SQL 注入、HTTPS 或其他与 PHP 无关的问题。我将使用我的 docker-entrypoint.sh 脚本中的 bash 行来说明示例,但当然你…

aop实现原理_Java:由浅入深揭开 AOP 实现原理

点击上方“Java专栏”,选择“置顶或者星标”第一时间阅读精彩文章!1、☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜2、☞ 《Java面试手册》.PDF 点击查看作者:马佩juejin.im/post/5bf4fc84f265da611b57f906概述&a…

【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解

阅读目录 一、get请求 1、基础类型参数2、实体作为参数3、数组作为参数4、“怪异”的get请求二、post请求 1、基础类型参数2、实体作为参数3、数组作为参数4、后台发送请求参数的传递三、put请求 1、基础类型参数2、实体作为参数3、数组作为参数四、delete请求五、总结正文 前…

【转】01Teams的前世今生

说到Teams,这到底是一个什么产品?有人说它是团队协作工具,有人说它是云视频系统,有人说它是Hub,还有人说它是微软有史以来发展最快的一个产品,还有人说它完全是一个高效办公神器。其实都是对的。 Teams集成…

oracle insert 当前时间_Oracle知识点总结

目录1、Oracle的安装与下载2、基础查询3、条件查询 1)对比运算符 2)逻辑运算符 3)模糊查询 4)排序4、函数 1)数值函数 2)字符函数 3)时间日期函数 4)转换函数 5)通用函数5、聚合函数6、分组查询在学习Oracle之前,需要先有一定的数据库基…

【转】C#各类控件的输入输出(思维导图、知识点分析、案例解析)

第六周学习笔记—C#各类控件的输入输出 1.思维导图 知识点汇总: 着重介绍几个常用控件: 数据显示控件 DataGridView控件 列设置 a)、列的宽度铺满这个控件 设置如下:把AutoSizeColumnsModeFill;//可以在属性窗口中设置 b)、列名居中 代…

sqlserver连接字符串_10分钟使用EF Core连接MSSQL数据库

(给DotNet加星标,提升.Net技能)转自:Ron.liangcnblogs.com/viter/p/10243577.html前言在 .NET Core 2.2中Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从NuGet仓库单独应用 EFCore 包…

【转】ADO.Net之SqlConnection、 Sqlcommand的应用学习心得(思维导图,知识解析,案例分析)

ADO.Net之SqlConnection、 Sqlcommand的应用 一、思维导图: ADO.NET与SQL连接: 二、知识点介绍: SqlConnection和Sqlcommand都是组成数据提供程序的类。 SqlConnection使用它来建立和数据库的连接,Sqlcommand使用它执行SQL命令…

professional中文_Microsoft office 2007 简体中文版

点击蓝字 关注小白软件名称:Microsoft office 2007软件语言:简体中文软件大小:0.67GB安装环境:Win10/8/7下载链接:https://pan.baidu.com/s/1DybozQ-rn-t2s2EC7FrvFw 提取码:zoa0安装步骤1、解压安装包&…

【转】设计模式 ( 十七) 状态模式State(对象行为型)

设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用if... ellse语句来做状态判断来进行不同情况的处理。…