惠州市建设公司网站,微信客户端app下载,网页设计入门基础,工商注册服务平台文章目录 1_Https 的作用2_获取证书3_配置项4_配置类5_控制类6_启动类 1_Https 的作用
保护用户的隐私信息安全#xff1a;
在 HTTP 网站数据以明文方式传输#xff0c;客户的隐私极容易被盗取和泄露#xff0c;而部署 SSL 证书#xff0c;数据以 HTTPS 加密传输#xf… 文章目录 1_Https 的作用2_获取证书3_配置项4_配置类5_控制类6_启动类 1_Https 的作用
保护用户的隐私信息安全
在 HTTP 网站数据以明文方式传输客户的隐私极容易被盗取和泄露而部署 SSL 证书数据以 HTTPS 加密传输可以保护通信不被第三方监听和窃取从而保护用户隐私及安全。还可增加用户信任感和提升企业形象。
保护网站的安全性和完整性
HTTPS 是安全套接层超文本传输协议可以保证网站的信息从用户浏览器到服务器之间的传输是高强度加密传输的是不会被第三方窃取和篡改的还能避免网站被劫持而插入广告等防止被钓鱼网站攻击从而保护网站的安全性和完整性
防止被钓鱼网站攻击有效识别网站真实身份
http 网站会被浏览器标记 “不安全”而安装 https 证书会取消这种 “不安全” 的警告能增加访客信任度。同时对于安装了 OV SSL 证书或 EV SSL 证书的网站还能向用户证明网站的真实身份防止网站被钓鱼网站仿冒。
2_获取证书
需要在 SSL 证书颁发机构处申请或购买 SSL 证书并下载对应的 .pem 和 .key 文件。
由于只是进行本地测试所以这里将使用JDK1.8 开发工具包 bin 目录下的keytool.exe工具生成ssl密钥 keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore keystore.p12 -validity 3650 -storepass your-password -genkeypair 表示创建密钥。-alias 保存时的别名。-keyalg加密算法选择这里使用RSA。-keysize秘钥大小是有固定要求的。-storetype秘钥存储库的类型。-keystore密钥的存放位置。-validity有效时间单位是天。-storepass密钥库口令。 可以使用代码验证秘钥生成是否正确如
package org.example;import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;public class KeystoreExample {public static void main(String[] args) {String keystorePath path/to/your/keystore.p12;char[] keystorePassword your-keystore-password.toCharArray();try (FileInputStream fis new FileInputStream(keystorePath)) {KeyStore keystore KeyStore.getInstance(KeyStore.getDefaultType());keystore.load(fis, keystorePassword);System.out.println(密钥库加载成功);} catch (java.io.IOException e) {System.err.println(密钥库加载失败: e.getMessage());} catch (NoSuchAlgorithmException | CertificateException | KeyStoreException e) {System.err.println(可能是密码错误导致的解密失败);e.printStackTrace();}}
}或者使用keytool.exe工具进行验证
keytool -list -v -keystore keystore.p123_配置项
application.properties
server.port8081
server.error.path/log
server.servlet.session.timeout30s
# 设置应用程序的上下文路径为 /test002。这意味着所有以 /test002 开始的 URL 都将被认为属于这个应用程序。
server.servlet.context-path/test002
server.tomcat.uri-encodingUTF-8
server.tomcat.threads.max500
# 表示秘钥存储库的类型
server.ssl.key-store-typePKCS12
# 表示 SSL 密钥存储库的名称为 keystore.p12
server.ssl.key-storeclasspath:ssl/keystore.p12
# 表示 SSL 密钥别名为 myalias 。
server.ssl.key-aliasmyalias
# 这行设置的是 SSL 密钥存储库的密码为 your-password
# 密码不能特别简单不然项目启动时会出现异常
server.ssl.key-store-passwordyour-password其中server.port 配置 HTTPS 监听端口。server.ssl.key-store 配置证书存放路径server.ssl.key-store-password 配置证书密码server.ssl.key-store-type 和 server.ssl.key-alias 分别指定证书的类型和别名。 pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdspring_Back/artifactIdversion1.0-SNAPSHOT/versionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.9.RELEASE/versionrelativePath//parentpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies/project4_配置类
package org.example.config;import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class TomcatConfig {/*** 设置 Tomcat 的Server配置* return*/BeanTomcatServletWebServerFactory tomcatServletWebServerFactory(){TomcatServletWebServerFactory myFactory new TomcatServletWebServerFactory(){//创建一个安全约束对象Overrideprotected void postProcessContext(Context context) {SecurityConstraint constraint new SecurityConstraint();constraint.setUserConstraint(CONFIDENTIAL);//设置为机密级别SecurityCollection connection new SecurityCollection();//设置一个安全连接对象//作用到所有路由上connection.addPattern(/*);//加入 connection 对象到安全路由中去constraint.addCollection(connection);context.addConstraint(constraint);}};//配置HTTPS连接器myFactory.addAdditionalTomcatConnectors(createConnector());return myFactory;}/*** 创建一个连接兼容Https请求* return*/private Connector createConnector(){//tomcat 9 中//tomcat/conf/server.xml中不要使用org.apache.coyote.http11.Http11AprProtocol//要用HTTP/1.1Connector connector new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);//HTTP/1.1connector.setScheme(http);connector.setPort(8080);connector.setSecure(false);//关闭ssl检查//设置跳转到8081 的端口connector.setRedirectPort(8081);return connector;}
}这段代码创建了一个 Tomcat Servlet 容器并配置了一个 HTTPS 连接器。其中 redirectConnector() 方法实现了将 HTTP 请求重定向到 HTTPS 的功能。
启动项目完成上述配置后重新启动项目就能够在 HTTPS 协议下访问 Web 应用了。
需要注意的是在实际生产环境中还需要配置服务器的防火墙、负载均衡等相关组件保证 HTTPS 的安全性和稳定性。
5_控制类
package org.example.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class FirstController {GetMapping(/hey)public String hey(){return hey main;}
}6_启动类
package org.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;EnableAutoConfiguration
ComponentScan
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class,args);}
}此时使用 http 协议访问 8080 端口将跳转到 https 协议下的 8081端口。