网站的Http请求转为Https请求

本文详细介绍如何为Tomcat服务器安装HTTPS证书,包括证书的申请、格式转换、安装步骤及域名强制跳转HTTPS的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、申请Https证书

https://common-buy.aliyun.com/?spm=5176.2020520163.cas.1.zTLyhO&commodityCode=cas#/buy

二、安装证书

Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。

文件说明:

  1. 证书文件214193373120488.pem,包含两段内容,请不要删除任何一段内容。

  2. 如果是证书系统创建的CSR,还包含:证书私钥文件214193373120488.key、PFX格式证书文件214193373120488.pfx、PFX格式证书密码文件pfx-password.txt。

1、证书格式转换

在Tomcat的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,附件中只包含214193373120488.pem文件,还需要将私钥文件拷贝到cert目录,命名为214193373120488.key;如果是系统创建的CSR,请直接到第2步。

到cert目录下执行如下命令完成PFX格式转换命令,此处要设置PFX证书密码,请牢记:

openssl pkcs12 -export -out 214193373120488.pfx -inkey 214193373120488.key -in 214193373120488.pem
2、PFX证书安装

找到安装Tomcat目录下该文件server.xml,一般默认路径都是在 conf 文件夹中。找到

<Connector port="8443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="cert/214193373120488.pfx"
    keystoreType="PKCS12"
    keystorePass="证书密码"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

3、JKS证书安装(帮助)

( 1 ) 使用java jdk将PFX格式证书转换为JKS格式证书(windows环境注意在%JAVA_HOME%/jdk/bin目录下执行)

keytool -importkeystore -srckeystore 214193373120488.pfx -destkeystore your-name.jks -srcstoretype PKCS12 -deststoretype JKS
回车后输入JKS证书密码和PFX证书密码,强烈推荐将JKS密码与PFX证书密码相同,否则可能会导致Tomcat启动失败。

( 2 ) 找到安装 Tomcat 目录下该文件Server.xml,一般默认路径都是在 conf 文件夹中。找到

<Connector port="8443"
    protocol="HTTP/1.1"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    keystoreFile="cert/your-name.jks"
    keystorePass="证书密码"
    clientAuth="false"
    SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"
    ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

( 注意:不要直接拷贝所有配置,只需添加 keystoreFile,keystorePass等参数即可,其它参数请根据自己的实际情况修改 )

4、 重启 Tomcat。

5、 通过 https 方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看帮助视频。

三、域名或者“http://”强制跳转到“https://服务”

1.在tomcat里找到conf文件夹下的web.xml文件
2. 找到如下代码片段(在最下面)

 <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

3.在 /welcome-file-list 下面添加

 <login-config>
 <!-- Authorization setting for SSL -->
 <auth-method>CLIENT-CERT</auth-method>
 <realm-name>Client Cert Users-only Area</realm-name>
 </login-config>
 <security-constraint>
<!-- Authorization setting for SSL -->
 <web-resource-collection >
 <web-resource-name >SSL</web-resource-name>
 <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
 </security-constraint>
### Spring Cloud Gateway HTTPSHTTP 配置 在 Spring Cloud Gateway 中实现将 HTTPS 请求转换为 HTTP 请求的功能,可以通过自定义路由规则以及修改网关的行为来完成。以下是具体的配置方法: #### 1. 修改 `application.yml` 或 `application.properties` 为了使 Spring Cloud Gateway 将外部的 HTTPS 流量内部重定向到 HTTP 协议的服务端口上,可以调整如下属性: ```yaml server: port: 8443 # 设置服务器监听的 HTTPS 端口号 spring: cloud: gateway: routes: - id: http_to_https_route uri: http://localhost:8080 # 目标服务地址 (HTTP) predicates: - Path=/example/** # 定义匹配路径 ``` 上述配置中指定了一个名为 `http_to_https_route` 的路由规则[^5],它会拦截 `/example/` 开头的所有请求并将这些请求转发至目标 URI (`http://localhost:8080`)。 #### 2. 启用 SSL 支持 为了让 Spring Cloud Gateway 接收 HTTPS 请求,在应用启动时需加载证书文件。这通常涉及以下步骤: - **添加依赖项** 如果尚未引入必要的安全库,则需要更新项目的 Maven POM 文件以包含 Jetty 或 Tomcat 提供的支持包之一: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <!-- 如果使用 Jetty --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> </dependency> ``` - **配置 keystore 和 truststore 参数** 接着,在 `application.yml` 中指定密钥存储位置及其密码信息: ```yaml server: ssl: key-store-type: PKCS12 key-store: classpath:keystore.p12 key-password: secret enabled: true ``` 此部分设置了用于加密通信的数据源,并启用了 SSL 功能[^6]。 #### 3. 自定义过滤器处理协议切换逻辑 有时仅靠简单的 URL 映射无法满足需求场景下的复杂业务流程控制;此时可通过编写自定义全局过滤器或者局部过滤器进一步增强功能特性。下面展示了一个例子——创建一个新的类继承抽象基类 AbstractGatewayFilterFactory<T> 来实现特定行为模式: ```java import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; public class ProtocolConversionFilter extends AbstractGatewayFilterFactory<ProtocolConversionFilter.Config> { public static class Config { private String targetScheme = "http"; public void setTargetScheme(String scheme){ this.targetScheme=scheme; } public String getTargetScheme(){ return this.targetScheme; } } @Override public GatewayFilter apply(Config config) { return ((exchange, chain) -> { exchange.getRequest().mutate() .scheme(config.getTargetScheme()) .build(); return chain.filter(exchange); }); } } ``` 之后就可以像其他预设好的工厂那样注册该实例对象了[^7]: ```yaml spring: cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOrigins: "*" allowedMethods: - GET - POST default-filters: - name: ProtocolConversionFilter args: _targetScheme_: 'http' ``` 以上代码片段展示了如何构建一个能够改变原始请求 Scheme 属性值的新类型 Filter 并将其应用于整个应用程序之中。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值