Tomcat8.5配置https和SpringBoot配置https
Tomcat8.5配置https和SpringBoot配置https
Tomcat8.5配置https
第一步用JDK的keytools工具生成**文件
C:\Users\Administrator>D:\Java\jdk1.8.0_201\bin\keytool.exe -genkeypair -alias "
tomcat" -keyalg "RSA" -keystore "F:\tomcat.keystore" -validity 365
会出现如下提示:
JKS **库使用专用格式。建议使用 "keytool -importkeystore -srckeystore G:\tomcat
.keystore -destkeystore G:\tomcat.keystore -deststoretype pkcs12" 迁移到行业标准
格式 PKCS12。
可以选择使用如上提示的命令把**转换为PKCS12格式的,可以选择不转换,一般没有区别。
第二步 配置tomcat8.5
打开server.xml配置文件增加如下配置:
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="E:\tomcat.keystore"
keystorePass="123456"
>
</Connector>
重启Tomcat
用https访问站点
https协议已被配置为443端口
访问站点可以省略端口:
https://localhost
http依然可以用
http://localhost:8080
因为我的443端口被其它程序占用了,出现了403错误,所以我是把https的端口改为了9443,这个具体要视具体情况设置,最好还是用443端口。
> netstat -ano | findstr "443"
SpringBoot配置https
第一步 配置application文件
(使用之前生成的**文件)
server:
port: 9443
ssl:
key-store: E:\tomcat.keystore
key-store-password: 123456
key-alias: tomcat
key-store-type: PKCS12
这样就可以使用https访问站点了。
http转https请求访问
在应用启动类加上如下代码即可。
@Bean
public Connector connector(){
Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(9443);
return connector;
}
@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector){
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(connector);
return tomcat;
}
在使用http访问站点时会自动转换为https.
注意端口的配置和80、443的默认访问。