java项目http变更https

本文详细介绍了如何在Tomcat服务器上配置SSL,包括创建keystore文件、修改server.xml以使用keystore、配置应用使用SSL以及如何申请数字证书。通过这些步骤,你可以确保你的应用在HTTPS下运行,提供更安全的数据传输。

1. 创建 keystore 文件

执行keytool -genkey -v -alias tomcat -keyalg RSA   -validity 3650  -keystore c:\tomcat.keystore -dname "CN=localhost,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass password -keypass password

c盘根目录 创建了一个 tomcat.keystore 文件

2. 配置 Tomcat 以使用 keystore 文件

打开 server.xml 找到下面这段注释掉

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" />

将内容改为

<Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="C:/tomcat.keystore" keystorePass="password"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />

3. 测试

启动 Tomcat 并访问 https://localhost:8443. 你将看到 Tomcat 默认的首页。

 

需要注意的是,如果你访问默认的 8080 端口,还是有效的。

4. 配置应用使用 SSL

打开应用的 web.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>
复制代码

将 URL 映射设为 /* ,这样你的整个应用都要求是 HTTPS 访问,而 transport-guarantee 标签设置为 CONFIDENTIAL 以便使应用支持 SSL。

如果你希望关闭 SSL ,只需要将 CONFIDENTIAL 改为 NONE 即可。

 

向 CA 提交域名及公司信息申请数字证书就可以了。当然了,数字证书的申请需要花费年费的,一年 4000 到 20000 元不等。

虽然 JDK 的 keytool 工具也可以免费制作自签名的证书,但这只能用在练习或者测试中,因为如果数字证书颁布商不在浏览器的信任列表中,是会给用户弹出警告框的。作为电子商务网站肯定要用商业的数字证书!

### 将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加密机制之下运作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值