无法使用 HTTPS 连接到在服务器上运行的 Spring 项目(SSL 错误)

到目前为止,我已经设置了一个运行良好的 Spring Framework 5 项目。需要为某些功能启用 HTTPS,因此请遵循教程。当前使用以下命令在服务器上生成了证书和密钥:


keytool -genkeypair -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 365000

然后,我将此密钥库导入到我的资源文件夹中并使用了以下属性:


server.ssl.key-store= classpath:keystore.p12

server.ssl.key-store-password= myPassword

server.ssl.key-store-type= PKCS12

server.ssl.key-alias= tomcat

server.port= 8444

我还使用以下配置设置了从 HTTP 到 HTTPS 的重定向:


@Bean

public ServletWebServerFactory 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(redirectConnector());

    return tomcat;

}


private Connector redirectConnector() {

    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");

    connector.setScheme("http");

    connector.setPort(8182);

    connector.setSecure(false);

    connector.setRedirectPort(8444);

    return connector;

}

当从我的 IDE 本地运行或通过运行编译的 .jar 时,它工作正常。但是,当我尝试在我的服务器(以前运行良好的本地运行 Synology NAS)上运行它时,我在尝试访问地址 ( https://192.168.10.10:8444) 时出现错误,在 Firefox:SSL_ERROR_NO_CYPHER_OVERLAP 和 chrome上出现以下错误 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。我一直在寻找答案,但我没有找到任何改变这个问题结果的解决方案。


largeQ
浏览 305回答 2
2回答

白衣非少年

老问题,但我有同样的问题。Synology Station 使用旧版 JDK (1.8.0_161)。更新到最新的 1.8 (1.8.0_202-b08) 后一切正常。

慕田峪4524236

一个典型的错误可能是您的 *.p12 文件不会被打包到部署的工件中。你检查过你的罐子里有它吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java