如何配置ssl java
生成Java密钥库(Keystore)
使用keytool工具生成包含SSL证书的Java密钥库(JKS文件)。以下命令生成一个自签名证书:
keytool -genkeypair -alias mydomain -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365
-alias:证书别名。-keystore:密钥库文件名(默认路径为用户目录)。-validity:证书有效期(天)。
配置Tomcat服务器
在conf/server.xml中启用HTTPS连接器(Tomcat 8.5+示例):
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true">
<SSLHostConfig>
<Certificate
certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="changeit"
type="RSA" />
</SSLHostConfig>
</Connector>
certificateKeystoreFile:密钥库路径(相对或绝对路径)。certificateKeystorePassword:密钥库密码(与生成时一致)。
配置Spring Boot
在application.properties或application.yml中启用HTTPS:

server.port=8443
server.ssl.key-store-type=JKS
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=changeit
server.ssl.key-alias=mydomain
将keystore.jks文件放在src/main/resources目录下。
强制HTTP重定向到HTTPS
在Spring Boot中通过配置WebSecurityConfig实现:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requiresChannel()
.requestMatchers(r -> r.getHeader("X-Forwarded-Proto") != null)
.requiresSecure();
}
}
验证SSL配置
访问https://localhost:8443,浏览器可能会提示自签名证书风险,需手动信任。使用openssl验证证书信息:
openssl s_client -connect localhost:8443 -showcerts
使用Let's Encrypt证书(可选)
替换自签名证书:
- 使用Certbot获取证书(生成
fullchain.pem和privkey.pem)。 - 将PEM文件转换为PKCS12格式:
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name mydomain - 将PKCS12导入JKS:
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -destkeystore keystore.jks
注意事项
- 生产环境建议使用CA签发的证书(如Let's Encrypt)。
- 密钥库密码需妥善保管,避免泄露。
- 定期更新证书(尤其是Let's Encrypt的90天有效期)。






