Java Web网站搭建SSL证书的问题与解决方案

2024-09-06 16:38

本文主要是介绍Java Web网站搭建SSL证书的问题与解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天给网站添加SSL证书加密连接,说白了就是之前的是http协议访问, 添加完之后就是https协议访问,结果遇到了一堆问题,特此总结一下。

前言:我采用的是沃通证书免费证书,已经给证书设置里密码并且已经下载到本地了,文件名:www.dtxzw.com.jks


一.Web容器采用的是Tomcat,Tomcat如何配置SSL证书?

解决方案:

  • 先把证书文件复制到tomcat的 conf目录下面
  • 打开conf目录下的server.xml文件,找到并修改以下内容:
 <!--<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />-->去掉注释并修改为:< Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"maxThreads="150" SSLEnabled="true" scheme="https" secure="true"keystoreFile="conf/www.dtxzw.com.jks"  keystorePass="证书密码"clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2"ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" />            

然后就可以吧tomcat 跑起来 用https://试试啦

如果您希望在中文页面显示认证标识,则在中文页面添加如下代码:

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="https://seal.wosign.com/tws.js"></SCRIPT>

如果您希望在中文页面显示认证标识,则在英文页面添加如下代码:

    <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="https://seal.wosign.com/tws-en.js"></SCRIPT>

当然,我的证书是沃通的所以链接的是他们的js文件。

这时候我门发现,只能自己指定https://+自己的域名访问,的时候,才会出现https访问,不指定还是会走http协议,我们不能要求用户每次发布除了打域名还要打https:// 吧?

二.配置tomcat http强制转 https

  • 强制HTTP转HTTPS 对工程的web.xml进行修改,加入:
<security-constraint><web-resource-collection><web-resource-name>OPENSSL</web-resource-name><url-pattern>/*</url-pattern></web-resource-collection><user-data-constraint><transport-guarantee>CONFIDENTIAL</transport-guarantee></user-data-constraint>
</security-constraint>
  • 禁用tomcat不安全的http方法 在tomcat/conf/web.xml最后加上一个节点
<security-constraint><web-resource-collection><url-pattern>/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>HEAD</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method></web-resource-collection><auth-constraint></auth-constraint>
</security-constraint>
  • 这样就配置好了,直接用域名访问试试吧。

三.本人还遇到一个问题,申请证书的时候,我填写的域名的是www.dtxzw.com,后来才知道dtxzw.com和填写的是有区别的,导致,最后用dtxzw.com访问提示不安全,十分头痛的问题啊,也找到了解决方案!

1.tomcat配置301重定向
顾名思义,就是你如果访问 dtxzw.com 服务器把你转到www.dtxzw.com。可以使用UrlRewriteFilter来实现。

2.开始配置

下载UrlRewriteFilterwget http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar
并放入tomcat的 WEB-INF/lib下

3.编辑WEB-INF/web.xml 在其它servlet mapping前加入

<filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher>
</filter-mapping>

4.添加跳转规则

在WEB-INF下新建urlrewite.xml文件,加入跳转规则<urlrewrite><rule><name>seo redirect</name><condition name="host" operator="notequal">^www.example.com</condition><condition name="host" operator="notequal">^localhost</condition><from>^/(.*)</from><to type="permanent-redirect" last="true">http://www.example.com/$1</to></rule>
</urlrewrite>

这样就结束啦


另外一种解决方案

  1. 创建filter
package com.jeecms.common.web;import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class WwwFilter implements Filter {private String originUrl;private String targetUrl;public void init(FilterConfig filterConfig) throws ServletException {this.originUrl = filterConfig.getInitParameter("originUrl");//来源url地址this.targetUrl = filterConfig.getInitParameter("targetUrl");//目标url地址}public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {String hostName = req.getServerName();if (hostName.startsWith(originUrl)) {HttpServletResponse response = (HttpServletResponse) resp;HttpServletRequest httpRequest = (HttpServletRequest) req;String queryString = (httpRequest.getQueryString() == null ? "" : "?" + httpRequest.getQueryString());response.setStatus(301);String requestUrl = httpRequest.getRequestURL().toString();requestUrl = requestUrl.replace(originUrl, targetUrl);response.setHeader("Location", requestUrl + queryString);response.setHeader("Connection", "close");} else {chain.doFilter(req, resp);}}
}

在web.xml文件中配置filter

<filter><filter-name>WwwFilter</filter-name><filter-class>com.jeecms.common.web.WwwFilter</filter-class><init-param><param-name>originUrl</param-name><param-value>dtxzw.com</param-value></init-param><init-param><param-name>targetUrl</param-name><param-value>www.dtxzw.com</param-value></init-param>
</filter><filter-mapping><filter-name>WwwFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

证书可以绑定多个域名的,所以在寻求另外一种解决方案,重新申请证书,免费嘛……..


最后一点:请保存好收到的证书压缩包文件及密码,以防丢失!!!

这篇关于Java Web网站搭建SSL证书的问题与解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142545

相关文章

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

java中反射(Reflection)机制举例详解

《java中反射(Reflection)机制举例详解》Java中的反射机制是指Java程序在运行期间可以获取到一个对象的全部信息,:本文主要介绍java中反射(Reflection)机制的相关资料... 目录一、什么是反射?二、反射的用途三、获取Class对象四、Class类型的对象使用场景1五、Class

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3