我一直在努力寻找一种方法来轻松判断 Java 服务器是否已从 JSP 启用 SSL 以重定向单个页面。我这样做的原因是,如果启用了 SSL,我只想转发到 SSL,这样可以轻松地在我们的本地开发系统中进行测试,而无需设置证书,然后部署到我们的发布系统并让证书“正常工作”。
我已经查看了尝试创建 SslSocketFactory 并查看它是否正常工作而没有抛出异常,但这似乎并没有像我想的那样工作。然而,我不是特别喜欢这种方法,因为我必须花时间创建工厂才能将其丢弃。我真的只是在寻找一个我可以使用的 public boolean isSslEnabled()
方法调用。
目前我们拥有的是默认状态是不使用 HTTPS,但是在发布系统上您可以通过 HTTPS 访问该站点。这并不理想,因为用户仍然可以通过 HTTP 访问站点,然后所有内容都将以明文形式发送。我也不打算加密整个服务器,如果启用了 SSL,则只加密一个页面。
最佳答案
您的 Java 代码不应该关心是否启用了 SSL。尽量只保留他的配置。
如果您在 web.xml 中设置了 SSL 要求,那么您的开发人员可以覆盖他们的本地 web.xml 以满足他们的本地服务器要求(例如 eclipse)。
如果您担心每个生产服务器的 SSL,最好创建您自己的证书颁发机构并生成您自己的 SSL 证书。这样您就可以将完全相同的 EAR 或 WAR 部署到预生产和生产环境。您不想在每个环境中摆弄您的部署。
关于java - 只有在 jsp 中启用时才重定向到 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768421/