tomcat http改成https请求

HTTPS证书获取与服务器部署教程:CA签发与自签名
本文详细讲解了如何从CA机构获取HTTPS证书用于服务器安全连接,以及如何在本地通过JDK生成自签名证书进行测试。包括关键步骤、配置Tomcat服务器以支持https请求,以及如何在web.xml中调整设置。


一、获取SLL证书

1.CA机构签发的https证书

需要到CA机构申请,收费,正式项目这个可以委托甲方申请。这里提供几个权威的CA机构:
CAJ机构
申请通过之后会下发证书和秘钥,txt文件中会有秘钥。
在这里插入图片描述

2.本地自签名证书

本地测试的话就没必要去申请CA认证,可以通过JDK自己给自己下发证书:
首先,进入jdk的bin路径下,在此处按住shift+右键,打开Powershell窗口,执行下面的命令

 keytool -genkey -v -alias keystoreKey -keyalg RSA -validity 3650 -keystore F:\apache-tomcat-8.5.59\conf\tomcat.keystore

keytool -genkey:使用默认的算法生成公钥和私钥

-alias 名称 :证书的别名,

-keyalg:制定密钥的算法,如果需要制定密钥的长度,可以再加上keysize参数,密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍

-validity:证书的有效日期,默认是90天,这里设置的3650天

-keystore:参数可以指定密钥库的名称,密钥库其实是存放秘钥和证书文件,会将生成的证书存放到指定的目录下。
接下来会让输入部分信息:
注意:名字与姓氏是域名,本地可以直接指定localhost,剩下的可以直接回车,最后一个是否正确输入 y
在这里插入图片描述
这样在F:\apache-tomcat-8.5.59\conf\下就生成了秘钥库文件

二、服务器中使用https请求

这里以tomcat为例,windows环境下
找到tomcat conf目录下的server.xml文件,全局搜索https,如果没有复制下面的代码到文件中,其中port是项目访问端口号,keystoreFile是生成的秘钥库文件,keystorePass是生成秘钥库文件时的密码

	    <Connector port="50101" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="F:/apache-tomcat-8.5.59/conf/tomcat.keystore" 
			   keystorePass="123456" />

在这里插入图片描述
我这里直接将http请求给毙掉了,切换的https请求;这里还可以设置成将http请求强制转换成https请求,只需将http请求的Connector放开,将本地环境处 port换成8443,8443是默认的转发接口,可以给成别的,只需保证redirectPort和port一致就行。
接下来需要在web.xml中设置https属性:在web.xml文件中搜索: 在后面加上下面这段代码

	<!--强制使用https,http请求会自动转为https -->
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<!--配置网站支持https,/* 表示全部请求都走https, transport-guarantee 标签设置为 CONFIDENTIAL以便使应用支持 SSL。 如果需要关闭 SSL ,将 CONFIDENTIAL 改为 NONE 即可 -->
<security-constraint>
    <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>

--------完成 ----------

测试

在浏览器地址栏输入项目地址,这里可能会出现下面这种情况,点击继续前往
在这里插入图片描述
这里可以单击 不安全查看证书有效期
在这里插入图片描述
点击证书
在这里插入图片描述

### 将Java项目中的HTTP配置修改为HTTPS #### 1. 准备SSL/TLS证书 为了启用HTTPS,首先需要准备一个有效的SSL/TLS证书。可以使用自签名证书用于开发环境测试,生产环境中建议购买由受信任CA签发的证书[^1]。 对于Spring Boot应用而言,在本地调试阶段可以通过`keytool`命令来创建自签名证书并将其存储于密钥库文件中: ```bash keytool -genkeypair -alias selfsigned -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650 ``` 此命令会提示输入一些必要信息以及设置密码,请妥善保管这些数据以便后续引用[^6]。 #### 2. 修改application.properties或application.yml配置文件 针对采用默认内嵌Tomcat容器启动方式的应用程序来说,只需调整其资源配置即可完成协议切换操作。具体做法是在项目的`src/main/resources/application.properties`或者`application.yml`里加入如下参数定义[^7]: 如果使用`.properties`格式,则添加以下内容: ```properties server.port=8443 server.ssl.key-store-type=PKCS12 server.ssl.key-store=classpath:keystore.p12 server.ssl.key-password=<your-key-password> ``` 如果是`.yml`格式的话则应如此编写: ```yaml server: port: 8443 ssl: keyStoreType: PKCS12 keyStore: classpath:keystore.p12 keyPassword: "<your-key-password>" ``` 这里指定了服务监听端口为8443,并告知框架关于SSL的相关细节,比如密钥仓库的位置和访问权限等重要事项[^8]。 #### 3. 配置自动重定向至HTTPS 为了让所有的HTTP请求都能够被正确导向到对应的HTTPS地址上,可以在Web应用程序的安全策略里面增加相应的规则实现强制性的URL转发功能[^3]。 当基于XML方式进行安全设定时,可在`web.xml`文档内部追加一段描述安全约束条件的内容片段: ```xml <security-constraint> <web-resource-collection> <web-resource-name>securedapp</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ``` 而若是依赖编程式的Security Configurer API来进行定制化处理,则可通过覆写`configure(HttpSecurity http)`方法达成相同效果: ```java @Override protected void configure(HttpSecurity http) throws Exception { http.requiresChannel() .anyRequest().requiresSecure(); } ``` 上述两种途径均能有效地促使任何未经加密传输的数据包都被迫转向经过SSL保护后的通道继续传递下去[^4]。 #### 4. 更新外部链接指向新的HTTPS URL 最后一步是要确保所有对外公开的服务入口都已更新成为带有`https:`前缀的新形式。这不仅限于API接口调用方所提供的基址变更,还包括但不限于HTML页面内的资源加载路径修正等工作范围之内[^5]。 通过以上几个方面的努力就可以顺利地把原有的纯文本通信模式转变为更加安全可靠的TLS加密机制之下运作了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值