Springboot1.x, 2.x配置https证书 ssl

1,进入jdk 目录生成key

cmd进入 jdk bin 目录下

我的是E:\Program Files\Java\jdk1.8.0_2.12\bin

输入命令

keytool -genkey -alias tomcat -keyalg RSA  -keystore "E:\Program Files\Java\jdk1.8.0_2.12\bin\ssl.key"

alias 别名

keyalg加密算法

2.properties配置

server.ssl.key-store=ssl.key
server.ssl.key-store-type=JKS
server.ssl.key-alias=ssl
server.ssl.key-store-password=123456

3.启动类配置

2.x配置

@Bean
@Qualifier(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
public DispatcherServlet dispatcherServlet() {
    return new com.ibeetl.admin.core.conf.MyDispatcherServlet();
}

/**
 * it's for set http url auto change to https
 */
@Bean
public TomcatServletWebServerFactory servletContainer() { //springboot2 新变化
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
        @Override
        protected void postProcessContext(Context context) {
            SecurityConstraint securityConstraint = new SecurityConstraint();
            securityConstraint.setUserConstraint("CONFIDENTIAL");
            SecurityCollection collection = new SecurityCollection();
            collection.addPattern("/*");
            securityConstraint.addCollection(collection);
            context.addConstraint(securityConstraint);
        }
    };
    tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
    return tomcat;
}

private Connector initiateHttpConnector() {
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
    connector.setScheme("http");
    connector.setPort(8081);
    connector.setSecure(false);
    connector.setRedirectPort(8443);
    return connector;
}

 

 

1.x配置

package com.art.boot;

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.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author chenye
 */
@Configuration
public class HttpsConfig {

    @Value("${server.custom.httpPort}")
    private Integer httpPort;
    @Value("${server.port}")
    private Integer httpsPort;

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

        tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
        return tomcat;
    }

    private Connector initiateHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(this.httpPort);
        connector.setSecure(false);
        connector.setRedirectPort(this.httpsPort);

        return connector;
    }
}

   
 

### 回答1: Spring Boot 配置 HTTPS 访问需要以下步骤: 1. 生成证书和私钥 可以使用 OpenSSL 工具生成自签名证书和私钥。在命令行中执行以下命令: ``` openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 ``` 其中,`key.pem` 是私钥文件,`cert.pem` 是证书文件。执行命令后,会提示输入一些信息,可以根据需要填写。 2. 配置 Spring Boot 在 `application.properties` 文件中添加以下配置: ``` server.port=8443 server.ssl.key-store-type=PKCS12 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=changeit server.ssl.key-alias=tomcat ``` 其中,`server.port` 是 HTTPS 端口号,`server.ssl.key-store-type` 是证书类型,`server.ssl.key-store` 是证书文件路径,`server.ssl.key-store-password` 是证书密码,`server.ssl.key-alias` 是证书别名。 3. 启动 Spring Boot 在启动 Spring Boot 时,需要添加以下 JVM 参数: ``` -Djavax.net.ssl.trustStore=classpath:keystore.p12 -Djavax.net.ssl.trustStorePassword=changeit ``` 其中,`javax.net.ssl.trustStore` 是信任证书库路径,`javax.net.ssl.trustStorePassword` 是信任证书库密码。 4. 测试 HTTPS 访问 在浏览器中输入 `https://localhost:8443`,如果能够正常访问,则说明 HTTPS 配置成功。 ### 回答2: 在开发Java Web应用程序时,保护用户的数据安全是非常重要的,这就需要配置HTTPS访问。Spring Boot非常强大,可以轻松为应用程序配置HTTPS访问。在本文中,我们将学习如何配置Spring Boot应用程序以使用HTTPS访问。 1. 生成证书 第一步是为应用程序生成一个SSL证书,我们可以使用Java的keytool工具来生成证书。输入以下命令,生成证书keytool -genkeypair -alias myapp -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650 这会要求您设置密码和证书信息。然后,证书将存储在名为keystore.p12的文件中。 2. 配置application.properties 打开application.properties配置文件,将以下配置添加到文件末尾: server.port=8443 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=123456 server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias=myapp 3. 启动应用程序 现在,您可以启动应用程序并尝试使用HTTPS访问它。您可以使用任何现代Web浏览器,例如Chrome,Firefox或Safari。 在浏览器的地址栏中输入https://localhost:8443,并按回车键。您将看到浏览器中的SSL警告。这是因为浏览器不信任我们自己的证书。选择“继续前往站点(不安全)”,应用程序将在SSL的保护下打开。 这就是如何配置Spring Boot应用程序以使用HTTPS访问。现在您可以使用SSL保护您的应用程序和用户数据。 ### 回答3: Spring Boot是Spring框架的一个快速开发框架,能够帮助开发者迅速搭建一个完整的应用程序。对于许多企业来说,为了保证信息安全,需要使用HTTPS来保护敏感信息。本文将介绍如何在Spring Boot中配置HTTPS访问。 首先,在Spring Boot中配置HTTPS访问,需要准备一个SSL证书。可以使用自己的证书,也可以使用免费的Let's Encrypt证书。在本文中,我们将使用自制的证书。 创建证书的步骤如下: 1. 创建一个密钥存储库。可以使用keytool命令来完成: `keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore keystore.jks` 2. 生成自签名的证书: `keytool -exportcert -alias tomcat -file server.crt -keystore keystore.jks` 3. 将证书添加到受信任的证书存储中: `keytool -importcert -alias tomcat -file server.crt -keystore truststore.jks` 接下来,需要配置Spring Boot应用程序,使其支持HTTPS访问。可以通过在application.properties中添加以下属性来配置: ```properties # Enable HTTPS server.ssl.enabled=true # SSL keystore server.ssl.key-store-type=JKS server.ssl.key-store=classpath:keystore.jks server.ssl.key-store-password=changeit # SSL truststore server.ssl.trust-store-type=JKS server.ssl.trust-store=classpath:truststore.jks server.ssl.trust-store-password=changeit ``` 其中: - server.ssl.enabled:用于启用HTTPS访问。 - server.ssl.key-store-type证书存储库的类型。 - server.ssl.key-store证书存储库的位置。 - server.ssl.key-store-password:证书的密码。 - server.ssl.trust-store-type:受信任证书存储库的类型。 - server.ssl.trust-store:受信任证书存储库的位置。 - server.ssl.trust-store-password:受信任证书的密码。 最后,启动Spring Boot应用程序,使用https://127.0.0.1:8443进行访问。在浏览器中,会看到一条警告信息:您正在尝试访问使用加密的连接。如果您不信任该连接,可以单击取消。这是由于使用的是自制的证书,浏览器不信任该证书。 总之,在Spring Boot中配置HTTPS访问非常容易,只需要几步即可完成。将应用程序与HTTPS一起使用,可以更好地保护敏感信息,并增加应用程序的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java知路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值