java 如何配置https
配置 HTTPS 的步骤
生成密钥库和证书
使用 Java 的 keytool 工具生成密钥库(Keystore)和自签名证书。运行以下命令:
keytool -genkeypair -alias mydomain -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365
系统会提示输入密钥库密码、证书信息等。生成的 keystore.jks 文件将包含私钥和证书。
导出证书(可选)
如果需要将证书提供给客户端,可以导出为 .cer 文件:
keytool -exportcert -alias mydomain -keystore keystore.jks -file certificate.cer
配置 Tomcat 服务器
在 conf/server.xml 中配置 HTTPS 连接器。找到或添加以下内容:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="path/to/keystore.jks" keystorePass="yourpassword"
clientAuth="false" sslProtocol="TLS" />
Spring Boot 配置
在 application.properties 或 application.yml 中启用 HTTPS:
server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=yourpassword
server.ssl.key-alias=mydomain
验证 HTTPS
启动应用后,访问 https://localhost:8443。浏览器可能会提示证书不安全(自签名证书),需手动信任。
使用 Let's Encrypt(生产环境推荐)
替换自签名证书为受信任的 CA 证书。可通过 Certbot 工具获取 Let's Encrypt 证书,然后导入到密钥库:
keytool -importcert -alias mydomain -file fullchain.pem -keystore keystore.jks
HTTP 重定向到 HTTPS(可选)
在 Spring Boot 中配置重定向:

@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}






