spring boot配置ssl证书 TLS证书 https springboot配置TLS版本

spring boot配置ssl证书 TLS证书 https

在 .properties配置文件添加一下配置

https.port = 443 //端口号
https.ssl.key-store= D://project/server/cert/server.pfx  //ssl证书文件
https.ssl.key-password= 12a1sd21a2s 
https.ssl.key-store-password=12a1sd21a2s

在 application.java 启动类文件添加以下代码

	@Value("${https.port}")
    private Integer port;

    @Value("${https.ssl.key-store-password}")
    private String key_store_password;

    @Value("${https.ssl.key-password}")
    private String key_password;

    @Value("${https.ssl.key-store}")
    private String key_file;

    private Connector createSslConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
        try {
            connector.setScheme("https");
            connector.setSecure(true);
            connector.setPort(port);
            protocol.setSSLEnabled(true);
            protocol.setKeystoreFile(key_file);
            protocol.setKeystorePass(key_store_password);
            protocol.setKeyPass(key_password);
            
            //配置TLS 1.2 使用TLS 证书
            /*protocol.setSSLProtocol(Constants.SSL_PROTO_TLS);
			protocol.setSslEnabledProtocols(Constants.SSL_PROTO_TLSv1_2);
			
            return connector;*/
        } catch (Exception ex) {
            throw new IllegalStateException("can't access keystore: [" + "keystore"
                    + "] or truststore: [" + "keystore" + "]", ex);
        }
    }

    @Bean
    public ServletWebServerFactory servletContainer() {
        if(key_file != null && !"".equals(key_file)){
            TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
            tomcat.addAdditionalTomcatConnectors(createSslConnector()); // 添加https
            return tomcat;
        }
        return new TomcatServletWebServerFactory();
    }
    ```
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 可以通过配置嵌入式 Tomcat 的 Connector 实现 http 和 https 使用同一端口。具体步骤如下: 1. 在 application.properties 文件中添加以下配置: server.port=8080 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=123456 server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias=tomcat 其中,server.port 指定了 http 的端口号,server.ssl.key-store 指定了证书的路径,server.ssl.key-store-password 指定了证书的密码,server.ssl.keyStoreType 指定了证书的类型,server.ssl.keyAlias 指定了证书的别名。 2. 在启动类中添加以下代码: @Bean public EmbeddedServletContainerFactory servletContainer() { 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(createSslConnector()); return tomcat; } private Connector createSslConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("https"); connector.setSecure(true); connector.setPort(8443); connector.setProperty("SSLEnabled", "true"); connector.setProperty("sslProtocol", "TLS"); connector.setProperty("keystoreFile", "classpath:keystore.p12"); connector.setProperty("keystorePass", "123456"); connector.setProperty("keyAlias", "tomcat"); return connector; } 其中,createSslConnector() 方法创建了一个 SSL 连接器,servletContainer() 方法创建了一个嵌入式 Tomcat 容器,并将 SSL 连接器添加到容器中。 3. 运行程序,访问 http://localhost:8080 和 https://localhost:8443 即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值