{{item}}
{{item.title}}
{{items.productName}}
{{items.price}}/年
{{item.title}}
部警SSL证书可实现网站HTTPS加密保护及身份的可信认证,防止传输数据的泄露或算改,提高网站可信度和品牌形象,利于SEO排名,为企业带来更多访问量,这也是网络安全法及PCI合规性的必备要求
前往SSL证书对于Spring Boot应用而言,将HTTP协议升级为HTTPS协议,是保障数据传输安全、防止信息泄露和篡改的关键手段。HTTPS通过SSL/TLS(安全套接字层/传输层安全)协议对数据进行加密传输,而SSL证书则是实现HTTPS的核心组件。本教程将详细介绍如何在Spring Boot应用中进行SSL证书配置,帮助你的应用顺利启用HTTPS。
HTTPS是在HTTP的基础上加入了SSL/TLS协议层,形成了“HTTP+SSL/TLS=HTTPS”的架构。在数据传输过程中,客户端与服务器首先通过SSL/TLS协议进行握手,协商加密算法和密钥,建立安全连接。随后,应用层数据(如HTTP请求和响应)在传输前会被SSL/TLS层加密,加密后的数据通过网络传输到服务器,服务器接收后使用相应的密钥进行解密,获取原始数据。这一过程确保了数据在传输过程中的保密性、完整性和真实性,有效防止中间人攻击、数据窃取等安全威胁。
SSL证书是由受信任的证书颁发机构(简称CA)签发的数字证书,它包含了服务器的公钥、域名、有效期、颁发机构等信息,并经过CA的数字签名。SSL证书的主要作用有:
商业SSL证书由知名的CA机构颁发,如DigiCert、Comodo、Sectigo等。这些证书具有较高的安全性和可信度,适用于对安全要求较高的企业级应用和网站。购买商业SSL证书的一般流程如下:
对于个人开发者或对安全性要求相对较低的应用,可使用免费的SSL证书。Let's Encrypt是目前最常用的免费CA机构,它提供自动化的证书申请和管理工具,操作简便。使用Let's Encrypt获取SSL证书的步骤如下:
1 sudo apt update
2 sudo apt install certbot python3-certbot-apache
1 sudo certbot --apache -d example.com -d www.example.com
该命令会自动完成域名验证、证书申请和配置工作,将证书安装到Apache服务器中。如果你的应用未使用Apache服务器,也可使用Certbot的其他插件或手动配置证书。
无论使用商业证书还是免费证书,在配置到Spring Boot应用前,都需要将证书文件准备好。通常需要将证书文件( .crt )和私钥文件( .key )放置在Spring Boot项目的合适位置,例如 src/main/resources/ssl 目录下(可根据实际情况创建目录)。
在Spring Boot项目的 pom.xml 文件(Maven项目)或 build.gradle 文件(Gradle项目)中添加Spring Boot Web和Tomcat相关依赖(Spring Boot默认使用Tomcat作为嵌入式Web服务器):
1 <dependency>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-web</artifactId>
4 </dependency>
如果使用其他嵌入式Web服务器,如Jetty或Undertow,需添加相应的依赖。
在 src/main/resources 目录下的 application.yml 文件中添加HTTPS相关配置:
1 server:
2 port: 443 # 设置HTTPS默认端口为443
3 ssl:
4 key-store: classpath:ssl/keystore.p12 # 指定密钥库文件路径,keystore.p12为将证书和私钥合并后的文件
5 key-store-password: your_password # 设置密钥库密码
6 key-store-type: PKCS12 # 指定密钥库类型,PKCS12是常用的格式
7 key-alias: your_alias # 指定密钥别名,需与证书和私钥中的别名一致
在上述配置中, key-store 指定了密钥库文件的路径, key-store-password 为密钥库的密码, key-store-type 指定了密钥库的类型, key-alias 为密钥的别名。如果你的证书和私钥是分开的文件,需要先将它们合并为一个PKCS12格式的密钥库文件。可以使用OpenSSL工具进行合并,命令如下:
1 openssl pkcs12 -export -in certificate.crt -inkey private.key -out keystore.p12 -name your_alias
执行上述命令时,会提示输入密码,该密码即为 key-store-password 。
4. 配置HTTP重定向到HTTPS(可选)
为了确保用户在访问HTTP地址时自动跳转到HTTPS地址,可以在Spring Boot应用中配置HTTP到HTTPS的重定向。创建一个配置类,例如 WebServerConfig.java :
1 import org.apache.catalina.Context;
2 import org.apache.catalina.connector.Connector;
3 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
4 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
5 import org.springframework.beans.factory.annotation.Value;
6 import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
7 import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
8 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration;
10
11 @Configuration
12 public class WebServerConfig {
13
14 @Value("${server.port}")
15 private int httpsPort;
16
17 @Bean
18 public ServletWebServerFactory servletContainer() {
19 TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
20 @Override
21 protected void postProcessContext(Context context) {
22 SecurityConstraint constraint = new SecurityConstraint();
23 constraint.setUserConstraint("CONFIDENTIAL");
24 SecurityCollection collection = new SecurityCollection();
25 collection.addPattern("/*");
26 constraint.addCollection(collection);
27 context.addConstraint(constraint);
28 }
29 };
30 tomcat.addAdditionalTomcatConnectors(httpConnector());
31 return tomcat;
32 }
33
34 @Bean
35 public Connector httpConnector() {
36 Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
37 connector.setScheme("http");
38 connector.setPort(80); // HTTP端口
39 connector.setSecure(false);
40 connector.setRedirectPort(httpsPort); // 重定向到HTTPS端口
41 return connector;
42 }
43 }
上述配置类创建了一个HTTP连接器,并将HTTP请求重定向到配置的HTTPS端口,实现了从HTTP到HTTPS的自动跳转。
完成上述配置后,启动Spring Boot应用。在浏览器中输入应用的HTTPS地址(如 https://example.com ),检查是否能够正常访问应用,并且浏览器地址栏会显示安全锁图标,表明连接是安全的。你还可以使用在线SSL证书检测工具,如SSL Labs( https://www.ssllabs.com/ssltest/ ),对应用的SSL证书配置进行全面检测,查看是否存在安全隐患和配置问题,并根据检测结果进行相应调整。
通过以上步骤,你已经成功在Spring Boot应用中启用了HTTPS,并完成了SSL证书的配置。这不仅提升了应用的数据传输安全性,也增强了用户对应用的信任。在实际应用中,还需定期检查证书有效期,及时进行证书更新,确保应用始终保持安全可靠的运行状态。
Dogssl.cn拥有20年网络安全服务经验,提供构涵盖国际CA机构Sectigo、Digicert、GeoTrust、GlobalSign,以及国内CA机构CFCA、沃通、vTrus、上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!