如何配置Spring Boot项目以实现HTTPS安全连接?

2026-04-19 15:362阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计709个文字,预计阅读时间需要3分钟。

如何配置Spring Boot项目以实现HTTPS安全连接?

1. 项目上线,目前未配置过HTTPS安全连接。 刚刚申请了一个HTTPS免费证书。 (我使用的是unbuntu16系统) Let's Encrypt是介绍性质量的,而真正实用的工具是Certbot。 去https://certbot.org了解更多。

1.项目上线,以前没有配置过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.certbot.eff.org/lets-encrypt/ubuntuxenial-nginx(原网连接)。

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

server { # 访问$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值: 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)、在启动类里面需要加入这俩个方法。

如何配置Spring Boot项目以实现HTTPS安全连接?

@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安全连接内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

标签:方法

本文共计709个文字,预计阅读时间需要3分钟。

如何配置Spring Boot项目以实现HTTPS安全连接?

1. 项目上线,目前未配置过HTTPS安全连接。 刚刚申请了一个HTTPS免费证书。 (我使用的是unbuntu16系统) Let's Encrypt是介绍性质量的,而真正实用的工具是Certbot。 去https://certbot.org了解更多。

1.项目上线,以前没有配置过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.certbot.eff.org/lets-encrypt/ubuntuxenial-nginx(原网连接)。

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

server { # 访问$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值: 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)、在启动类里面需要加入这俩个方法。

如何配置Spring Boot项目以实现HTTPS安全连接?

@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安全连接内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

标签:方法