SpringBoot配置SSL证书,开启HTTPS安全访问!!!

这篇具有很好参考价值的文章主要介绍了SpringBoot配置SSL证书,开启HTTPS安全访问!!!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、前言
二、SpringBoot中配置SSL
1、环境
2、客户端单向认证服务端代码实战-PFX格式的证书
3、HTTP 转HTTPS

一、前言

通过HTTP协议传输数据,并不会对数据进行加密,所以存在着一定的风险,容易被抓包破解数据,而且现在各种浏览器对使用HTTP协议的网站也会提示不安全。通过将HTTP协议升级为HTTPS协议可以提高安全系数。使用HTTPS协议就需要了解一下SSL协议。

SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
服务器认证阶段:
1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
SSL协议提供的安全通道有以下三个特性:
机密性:SSL协议使用密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的。
完整性:SSL协议会对传送的数据进行完整性检查。
从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公司组织制定了SET协议,为网上信用卡支付提供了全球性的标准。
以上摘自百度。

二、SpringBoot中配置SSL

SSL证书的颁发必须是公开公认的CA机构颁发的,在浏览器中才会被认可是合法的;
SSL证书是针对域名的,单域名的SSL证书对非该域名也是无效的通配域名证书对一级域名和二级域名都有效。

1、环境
spring boot 2.0.0+
maven
一个域名(各大域名商有售,阿里、腾讯、华为)
SSL证书(阿里云上有免费的SSL证书,有效期一年)

2、客户端单向认证服务端代码实战-PFX格式的证书
tomcat中支持PFX与JKS格式两种格式的证书,这边演示的就是PFX格式的证书演示。
(1)准备一个PFX后缀的SSL证书。(域名.pfx)
(2)快速构建一个springboot模块
(3) 把SSL证书放到resources目录下
springboot配置ssl证书,spring boot,ssl,https
(4)在项目配置文件application.yml中配置SSL

server:
  port: 80
  ssl: #ssl配置
    # resources根目录的”证书源文件.pfx“
    key-store: classpath:xxx.pfx
    # “.pfx”证书对应格式,“.jks"证书对应“RSA”
    key-store-type: PKCS12 证书类型
    key-store-password: 证书密码
    #key-password: 私钥密码

如果证书密码和私钥密码相同的只配置一个即可,因为tomcat默认先用keyStore的pass去解私钥。(注:如果你使用阿里云上的免费SSL证书,下载jks格式的证书的时候,只有一个密码,是证书的密码)

(5)本地访问http协议的80端口:http://127.0.0.1:80
springboot配置ssl证书,spring boot,ssl,https

通过上述访问发现,会报出以上提示,如果通过http访问会提示访问需要组合TLS,但是如果用户直接通过这种方式访问的话,存在着极差的用户体验。

3、HTTP 转HTTPS
(1)修改配置文件

server:
  port: 443
  ssl: #ssl配置
    # resources根目录的”证书源文件.pfx“
    key-store: classpath:xxx.pfx
    # “.pfx”证书对应格式,“.jks"证书对应“RSA”
    key-store-type: PKCS12 证书类型
    key-store-password: 证书密码
    #key-password: 私钥密码

(2)在application中添加

    //SpringBoot-v2.0+配置方式
    @Bean
    public ServletWebServerFactory servletContainer() {
        //创建Tomcat服务器工厂实例
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        //添加此tomcat实例其它连接参数
        tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
        return tomcat;
    }

    /**
     * 配置tomcat自定义连接参数
     * @return
     */
    private Connector createHTTPConnector() {
        //Connector port有两种运行模式(NIO和APR),选择NIO模式:protocol="org.apache.coyote.http11.Http11NioProtocol"
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        //启用http(80)端口
        connector.setScheme("http");
        //设置安全连接标志,该标志将被分配给通过该连接接收的请求
        //secure新的安全连接标志
        //如果connector.setSecure(true),则http使用http, https使用https; 分离状态,因此设置false
        connector.setSecure(false);
        //http默认端口
        connector.setPort(80);
        //重定向证书端口443,便于http自动跳转https
        connector.setRedirectPort(443);
        return connector;
    }

(3)再去访问http协议的80端口:http://127.0.0.1:80springboot配置ssl证书,spring boot,ssl,https
访问成功!但是显示连接不安全!
上述代码会将http端口的请求转发到https端口,而用户无需做其它的操作。
本地直接访问https端口和在服务器上直接访问就不贴图了。文章来源地址https://www.toymoban.com/news/detail-671152.html

到了这里,关于SpringBoot配置SSL证书,开启HTTPS安全访问!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • springboot前后端分离项目配置https接口(ssl证书)

    本记录操作方法vue.js项目使用nginx代理部署,后端springboot正常部署 前端使用443端口,后端使用8080端口 全部接口使用https vue.js配置axios相对路径,好处:请求代理再nginx.conf中配置,无需重新修改代码 request和response 拦截器根据具体项目要求进行配置 在/usr/front/vue下创建Dockerf

    2024年02月03日
    浏览(31)
  • Apache配置ssl证书-实现https访问

    443为HTTPS服务的默认端口 启用SSL功能,安装mod_ssl.so模块 使用Certbot签发和续费泛域名SSL证书:https://blog.csdn.net/cljdsc/article/details/133461361 vhost的域名配置文件.conf,在目录:/etc/httpd/conf.d HTTP配置: HTTPS配置: HTTP HTTPS 配置 查看配置文件是否正常 重启apache配置

    2024年02月03日
    浏览(34)
  • nginx配置ssl证书使用https访问

    一:申请证书,我使用的是阿里云免费证书 二:下载证书,解压到服务器上 两个文件:www.xx.com.pem和www.xx.com.key 三:打开配置文件/usr/local/nginx/conf/nginx.conf 放开端口443,替换ssl_certificate和ssl_certificate_key为自己证书路径    server {         listen       443 ssl;         server_na

    2024年01月20日
    浏览(43)
  • Linux nginx实现访问,配置ssl证书实现https访问

    注意:服务器需要开通80端口 (1)alias: alias指定的路径是location的别名,不管location的值怎么写,资源的 真实路径都是 alias 指定的路径 例如:同样请求 http://xxx.com/upload/top.gif 时,在服务器查找的资源路径是: /www/wwwroot/upload/top.gif (2)root:真实的路径是root指定的值加上

    2024年02月01日
    浏览(37)
  • springboot添加SSL证书,支持https与http

    将证书文件放在/resource目录下 修改配置文件

    2024年02月10日
    浏览(31)
  • 34、springboot切换内嵌Web服务器(Tomcat服务器)与 生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS

    知识点1:springboot切换内嵌Web服务器(Tomcat服务器) 知识点2:生成SSL证书来把项目访路径从 HTTP 配置成 HTTPS spring-boot-starter-web 默认依赖 Tomcat 内置服务器 改为 Jetty 服务器 改为 Undertow 服务器 目的:把请求路径 http://xxxxx 改成 https://xxxxx 如图:原本普通的项目,启动后是http的

    2024年02月11日
    浏览(38)
  • nginx配置监听443端口,开启ssl协议,走 https 访问

    最近有个项目需要上线到浙政钉工作台,那边要求项目走 https 访问,但是服务器没有进行相应的配置一直都是走的 http,于是乎对服务器进行的一番配置,注明:linux 服务器 ,记录一下相关的踩坑记录,以及完整版的成功配置流程。 各位找到各自服务器上的 nginx 安装目录,

    2024年02月06日
    浏览(46)
  • nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)

    最近在阿里云上入手了一台云服务器,准备搭建一套java程序,在 Nginx 配置SSL证书时,配上之后前端可以正常以https的方式打开,但是访问不到后端,自己也是明明知道是 Niginx 配置的问题,但就不知道错哪了,当时心里的那种感觉真是无法表达呜呜呜… 经过排查发现 前端访

    2024年02月11日
    浏览(31)
  • nextcloud设置https nextcloud docker配置阿里云SSL证书实现HTTPS访问 亲测方案

    1、下载阿里云ssl证书,类型为:apache,得到三个文件两个crt,一个key。 2、把文件夹更名为cert,文件名改为chain.crt,pubilc.crt,web.key。 3、把文件夹复制进nextcloud容器/etc/apache2文件夹中 4、进入容器 执行 5、修改ssl.load配置文件 如果有下面这一句就不用修改了,没有就添加上 6、

    2024年02月13日
    浏览(31)
  • springboot集成Elasticsearch7.16,使用https方式连接并忽略SSL证书

    千万万苦利用科学上网找到了,记录一下

    2024年02月09日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包