当前位置: 首页 > 知识库问答 >
问题:

为我的有SSL证书的web应用程序添加了HTTP支持

许彦
2023-03-14

为了支持HTTP,我已经将以下代码添加到我的网络应用程序(Spring启动2.5.6v),该应用程序具有HTTPS的SSL证书。

@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(8080);
    connector.setSecure(false);
    connector.setRedirectPort(8443);
    return connector;
}

我从上面的代码中可以理解的是,我从外部站点复制粘贴(没有太多解释),每当它收到8080 port(HTTP://localhost:8080)的请求时,它都会将请求重定向到8443 port(HTTPS://localhost:8443)。我不太确定是否也将此代码用于生产代码。此代码的缺点是什么,可以进行哪些修改?还请提供与上述代码相关的文档/解释,以便我清楚地了解我正在做什么。

共有1个答案

连厉刚
2023-03-14

您可以考虑以下查询参考:

如何在Spring Boot Java应用程序中启用HTTPS

我认为这可能行得通,但是您也可以考虑使用< code>tomacat ajp连接器,因为spring-boot使用< code>apache tomacat服务器在您的系统上运行。

更多信息请参考:AJP连接器

只需在Spring Boot2.2.5.RELEASE版本上启用AJP。并添加以下内容:((AbstractAjpProtocol)ajpConnector.getProtocolHandler()). setSec必需(false);您可以在下面的代码中看到我在哪里使用了它

用于说明的演示代码:

@Configuration
public class TomcatConfiguration {

    @Value("${tomcat.ajp.port}")
    int ajpPort;

    @Value("${tomcat.ajp.remoteauthentication}")
    String remoteAuthentication;

    @Value("${tomcat.ajp.enabled}")
    boolean tomcatAjpEnabled;

    @Bean
    public TomcatServletWebServerFactory servletContainer() {

        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        if (tomcatAjpEnabled) {
            Connector ajpConnector = new Connector("AJP/1.3");
            ajpConnector.setPort(ajpPort);
            ajpConnector.setSecure(false);
            ajpConnector.setAllowTrace(false);
            ajpConnector.setScheme("http");
            ((AbstractAjpProtocol) ajpConnector.getProtocolHandler()).setSecretRequired(false);
            tomcat.addAdditionalTomcatConnectors(ajpConnector);
        }

        return tomcat;
    }

}

另外在application.properties文件中添加:

server.port=8082
tomcat.ajp.port=9090
tomcat.ajp.remoteauthentication=false
tomcat.ajp.enabled=true
 类似资料:
  • 我正在设置SSL证书以在我的站点上启用HTTPS。主webapp服务于根域:domain.com。然而,CDN是在亚马逊CloudFront的CDN.domain.com上提供的。 在从CDN中检索资产时,两个不同的SSL证书会以某种方式搞砸CORS,或者在这样的设置中还有什么我应该注意的吗? 谢了。

  • 你可以添加 SSH 或 SSL 证书来连接你的实例。若要配置 SSH 或 SSL 证书,请前往“配置”->“SSH 或 SSL 证书”。 添加 SSH 证书 若要创建一个新证书,请点击“+ 新建证书”并选择“SSH 证书”。 名 SSH 证书的名。 私钥 粘贴私钥文件的内容。 添加 SSL 证书 若要创建一个新证书,请点击“+ 新建证书”并选择“SSL 证书”。 名 SSL 证书的名。 CA 证书

  • 我已经成功地预先在另一个项目中添加了一个新的主要活动。然而,我试图在不同的项目中使用相同的技术(由于主线程中的工作量而出现问题)。 我想创建一个名为“主页”的简单主页,上面有一个按钮,可以弹出名为“主活动”的原始主活动。"主要活动用于连接到名为"GetLightData"的servlet。这个项目在添加主页之前在模拟器上工作(有一些错误),但是现在它会立即崩溃。我真的很感激特定于我的代码的答案,谢

  • 背景资料 我试图实现一个WAF字体的web应用程序托管在Azure应用程序服务。此应用程序被配置为强制https,因此WAF需要通过https流量(这里解释的端到端SSLhttps://docs.microsoft.com/en-us/azure/application-gateway/ssl-overview#end-to-end-ssl-encryption)。 我已通过Azure中的应用程序

  • 问题内容: 一般来说,我从GoDaddy获得了3个文件: 主证书文件 服务器私钥 捆绑文件 通过以下方式在Go服务器中配置了所有这些文件: 网络服务器运行正常,当前发布在。 我使用验证了我的SSL ,它的响应是 您可以转到此链接查看所有详细结果。 我想念什么? 问题答案: 在该线程之后,并从doc中开始: 如果证书是由证书颁发机构签名的,则certFile应该是服务器证书,任何中间件和CA证书的串