Springboot konfiguriert https und löst das Problem der Portbelegung nach der Konfiguration

1. SSL-Zertifikat generieren

1. Geben Sie das bin-Verzeichnis des lokalen JDK ein und öffnen Sie cmd
2. Geben Sie den Befehl zum Generieren des Zertifikats ein
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/tomcat.keystore -storepass 123456 

Alias: Alias
​​Keypass: Zertifikatspasswort
Keystore: generiertes Zertifikat

2. Konfigurieren Sie die Datei application.properties

server.port=7003
#jks
server.ssl.key-store=tomcat.keystore
server.ssl.key-store-password=123456
server.ssl.key-password=123456
server.ssl.key-store-type=JKS
server.ssl.key-alias=tomcat

3. Konfigurationsklasse

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

/**
 * @author dongxiajun
 * @since 2022-12-26 16:10
 */
@Configuration
public class TomcatConfig {
    
    
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
    
    

        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");
        //这个标识的是http的端口
        connector.setPort(7004);
        connector.setSecure(false);
        //这个标识的是https的端口内容;
        connector.setRedirectPort(7003);
        return connector;
    }
}

4. Es liegt eine Portanomalie vor

Platzieren Sie das Zertifikat unter „Ressource“ und konfigurieren Sie es in der Konfigurationsdatei: server.ssl.key-store=classpath:tomcat.keystore
Lösung:
①Legen Sie die Zertifikatsdatei im Projektstammverzeichnis
ab ②Konfiguration der Konfigurationsdatei:server.ssl.key-store=tomcat.keystore

Acho que você gosta

Origin blog.csdn.net/dxjren/article/details/128452295
Recomendado
Clasificación