springboot配置https安全连接的方法

1.项目上线,以前没有配置过https的安全连接。。。刚刚申请了一个https免费证书。(我使用的是unbantu16系统)

Let's Encrypt 是属于介绍性质的,而真正用到的工具是 Certbot,去 https://certbot.eff.org/ 下载合适自己系统的Certbot。

2. 下载Certbot

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot

3.配置 nginx

location ^~ /.well-known/ {
    alias /var/www/html;
    default_type "text/plain";
    allow all;
  }

4.https://certbot.eff.org/lets-encrypt/ubuntuxenial-nginx(原网连接)。

5.cd /etc/nginx/sites-available/default进行配置:(如下)

server {
 # 访问http 跳转到https
 listen 80;
 server_name example.com;
 rewrite ^(.*) https://$server_name$1 permanent;
}

server {
 listen 443 ssl;
 server_name example.com;
 index index.php index.html index.htm;

 #####SSL#####

 location ^~ /.well-known/ {
   alias /var/www/html;
   default_type "text/plain";
   allow all;
 }

 ssl_certificate   /etc/letsencrypt/live/example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

 ssl_session_timeout 1d;
 ssl_session_cache  shared:SSL:50m;
 ssl_session_tickets on;
 ssl_protocols    TLSv1 TLSv1.1 TLSv1.2;

 ssl_prefer_server_ciphers on;

 # 推荐使用的ssl_ciphers值: https://wiki.mozilla.org/Security/Server_Side_TLS;
 ssl_ciphers
'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK';

 #####SSL#####

}

6.免费的会有3个月的使用期。需要3个月更新一次。

# 更新证书
certbot renew --dry-run

# 如果不需要返回的信息,可以用静默方式:
certbot renew --quiet

7.下面需要生成java要集成的jks证书。

1).openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat

执行完第一步需要输入俩个密码记住项目里需要用到。

2).keytool -importkeystore -deststorepass '密码' -destkeypass '密码' -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass '密码' -alias tomcat

8.最终生成项目中需要用到的jks证书。。。

9.springboot项目集成:

1).项目结构

application.yml中 放的是下面的配置:

server:
 port: 9233
 ssl:
 key-store: classpath:MyDSKeyStore.jks
 key-store-password: 密码
 key-password: 密码

上述的所有密码是可以设置成一样的。当然也可以不一样(不一样的话得记住那个密码是那个)。我这里为了省事,设置成一样的了。。

2)、在启动类里面需要加入这俩个方法。

  @Bean
  public EmbeddedServletContainerFactory servletContainer(){
    TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory(){
      @Override
      protected void postProcessContext(Context context) {
        SecurityConstraint securityConstraint=new SecurityConstraint();
        securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential
        SecurityCollection collection=new SecurityCollection();
        collection.addPattern("/*");
        securityConstraint.addCollection(collection);
        context.addConstraint(securityConstraint);
      }
    };
    tomcat.addAdditionalTomcatConnectors(httpConnector());
    return tomcat;
  }

  @Bean
  public Connector httpConnector(){
    Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8080);
    connector.setSecure(false);
    connector.setRedirectPort(9233);
    return connector;
  }

10.成功

到此这篇关于springboot配置https安全连接的方法的文章就介绍到这了,更多相关springboot https安全连接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot添加https服务器的方法

    什么是https 要说https我们得先说SSL(Secure Sockets Layer,安全套接层),这是一种为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密.SSL协议可以分为两层:SSL记录协议(SSL Record Protocol),它建立在可靠的传输协议如TCP之上,为高层协议提供数据封装.压缩.加密等基本功能支持:SSL握手协议(SSL Handshake Protocol),它建立在SSL记录协议之上,用于在实际数据传输开始之前,通信双方进行身

  • 为SpringBoot服务添加HTTPS证书的方法

    HTTPS是HTTP的安全版本,旨在提供数据传输层安全性(TLS).当你的应用不使用HTTP协议的时候,浏览器地址栏就会出现一个不安全的提示.HTTPS加密每个数据包以安全方式进行传输,并保护敏感数据免受窃听者或黑客的攻击. 您可以通过在Web应用程序上安装SSL证书来实现HTTPS,互联网上受信任的证书通常是需要(CA)颁发的证书.为了学习目的,您也可以使用自签名证书,比如:使用Java Keytool生成自签名证书. 一.自签名证书 您可以使用位于JDK bin文件夹下的Keytool生成证

  • SpringBoot配置https实操方法

    升级 https 记录 1.去阿里云购买证书(免费版),并提交审核资料 购买的证书 2.下载证书 下载证书 3.查看上图页面的第三步 JKS证书安装 4.在证书目录下执行阿里云提供的命令,密码都填 pfx-password.txt 中的内容(三次),会生成 your-name.jks 文件. 生成 jks 证书 此处我已改名为 any.jks 5.将 any.jks 复制到 spring boot 应用的 resources 目录下 移动证书 6.在 application.yml 中配置证书及

  • SpringBoot 改造成https访问的实现

    SpringBoot https改造 1.生成密钥证书 生成命令:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 (1)关键字解释: alias 密钥别名 storetype 指定密钥仓库类型 keyalg 生证书的算法名称,RSA是一种非对称加密算法 keysize 证书大小 keystore 生成的证书文件的存储路径

  • springboot配置https访问的方法

    1.购买或本地生成ssl证书 要使用https,首先需要证书,获取证书的两种方式: 1.自己通过keytool生成 2.通过证书授权机构购买 ###### 作为演示,我们使用keytool生成: C:\Users\xxx>keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 输入密钥库口令: 再次输入新口令: 您的名字与姓氏是什

  • SpringBoot2.0如何启用https协议

    SpringBoot2.0之后,启用https协议的方式与1.*时有点儿不同,贴一下代码. 我的代码能够根据配置参数中的condition.http2https,确定是否启用https协议,如果启用https协议时,会将所有http协议的访问,自动转到https协议上. 一.启动程序  package com.wallimn.iteye.sp.asset; import org.apache.catalina.Context; import org.apache.catalina.connect

  • 基于springboot设置Https请求过程解析

    1.首先去阿里云购买个证书,也有免费的,但是免费的只能使用一年,证书需要绑定域名 2.将证书放进项目 3.配置YML server: ssl: key-store: 55555.pfx key-store-password: 55555 keyStoreType: PKCS12 connectionTimeout: 20000 port: 8888 重点来了,配置请求转发 @Configuration public class WebMvcconfig implements WebMvcConf

  • springboot配置https安全连接的方法

    1.项目上线,以前没有配置过https的安全连接...刚刚申请了一个https免费证书.(我使用的是unbantu16系统) Let's Encrypt 是属于介绍性质的,而真正用到的工具是 Certbot,去 https://certbot.eff.org/ 下载合适自己系统的Certbot. 2. 下载Certbot sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/cert

  • springboot配置嵌入式servlet容器的方法

    配置嵌入式Servlet容器 springboot默认tomcat为嵌入式servlet容器,所以不用在配置tomcat. 1.如何定制修改servlet容器? 1.在applicatio.properties里修改和server有关的配置(推荐) 如: server.tomcat server.tomcat.connection-timeout= 连接超时时间 server.tomcat.uri-encoding=UTF-8 修改编码 server.servlet.XXX 通用servlet容

  • Nodejs在局域网配置https访问的实现方法

    零.需求: 做一个局域网WebRTC视频聊天系统,需要用到HTTPS.因此,配置Node.js使其支持HTTPS访问. 一.解决 在线生成和证书 访问:https://csr.chinassl.net/generator-csr.html 填写好之后点生成即可,我们可以下载到两个文件. 这里我的域名是192.168.110.10,得到192.168.110.10_csr.txt和192.168.110.10_key.txt这两个文件(妥善保存). 然后再访问:https://csr.chinas

  • SpringBoot配置MongoDB多数据源的方法步骤

    1.项目构建 添加 pom 文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 2.在 application.properties 中添加配置 ##start mongodb for basic #-------------

  • 使用SpringBoot配置https(SSL证书)

    目录 SpringBoot配置https(SSL证书) 仅需三步 1.把tomcat目录里面的.jks文件 2.配置application.yml 3.接下来是重定向 SpringBoot 改造成https访问 1.生成密钥证书 2.将生成的密钥证书拷贝到项目中的resource中 3.修改项目配置文件application.properties 4.启动项目,直接访问项目即可 SpringBoot配置https(SSL证书) 最近在做微信小程序,https是必须条件 仅需三步 SpringBo

  • Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 如下所示: configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --

  • 详解Nginx服务器中配置全站HTTPS安全连接的方法

    HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个: 数据保密性.保证内容在传输过程中不会被第三方查看到.就像快递员传递包裹时都进行了封装,别人无法知道里面装了什么东西.     数据完整性.及时发现被第三方篡改的传输内容.就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收.     身份校验.保证数据到达用户期望的目的地.就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方. 启用

  • SpringBoot配置web访问H2的方法

    [前情提要]最近开始搭建博客,在本地调试的时候使用的数据库是h2,但是调试的时候需要查看数据库,本文也由此而来. 下面是我用到的方法: 使用IDEA的Database连接工具,具体操作方法就是按照要求配置连接url,用户名和密码即可.具体操作见下图: 查询结果: 但是但是这个时候启动项目会报错: org.h2.jdbc.JdbcSQLException: Database may be already in use: null. Possible solutions: close all oth

随机推荐