首页 > 解决方案 > Spring Boot 本地主机 https 问题

问题描述

我想让我的本地主机从超文本传输​​协议变为安全套接字层超文本传输​​协议。所以我在我的 spring boot 项目中添加了一个密钥库,并像这样配置了我的 application.properties:

信息

在此处输入图像描述

但是我在 chrome 中得到一个错误:

localhost uses an unsupported protocol.
ERR__VERSION_OR_CIPHER_MISMATCH

注意:我没有对任何 java 文件进行任何更改。

标签: springspring-bootssltomcat

解决方案


当我遇到这个问题时,我通过bean下面的方法解决了它。希望这对你有帮助

@Configuration
class CustomConfiguration {

@Bean
public EmbeddedServletContainerFactory servletContainer() {
final int port = 8443;
final String keystoreFile = "/path/to/keystore"
final String keystorePass = "keystore-password"
final String keystoreType = "pkcs12"
final String keystoreProvider = "SunJSSE"
final String keystoreAlias = "tomcat"

TomcatEmbeddedServletContainerFactory factory = 
        new TomcatEmbeddedServletContainerFactory(this.port);
factory.addConnectorCustomizers( new TomcatConnectorCustomizer() {
    void    customize(Connector con) {
        Http11NioProtocol proto = (Http11NioProtocol) con.getProtocolHandler();
            proto.setSSLEnabled(true);
        con.setScheme("https");
        con.setSecure(true);
        proto.setKeystoreFile(keystoreFile);
        proto.setKeystorePass(keystorePass);
        proto.setKeystoreType(keystoreType);
        proto.setProperty("keystoreProvider", keystoreProvider);
        proto.setKeyAlias(keystoreAlias);
    }
});
return factory;
}
}

还要确保你调用 keytool -storetype pkcs12,而不是-storepass pkcs12


推荐阅读