有一些服务器必须要采用https安全访问模式,比如小程序开发,所有需要将我们的服务器转成https的访问。步骤如下:
1.首先在域名下面申请免费的安全证书( https://yq.aliyun.com/articles/221596 ),在证书的目录下使用命令行运行以下命令生成jks文件(java工程下需要):
keytool -importkeystore -srckeystore 215031325920305.pfx -destkeystore zpstore.jks -srcstoretype PKCS12 -deststoretype JKS
运行后,输入pfx和jks密码,让这两种密码设置成一样,也就是设置成跟原来同一个密码(省的后面添加多个密码)。215031325920305.pfx为安全证书下的pfx文件,zpstore.jks为自己设置的生成jks文件的名称。
2.在工程中将zpstore.jks保持在src/main/resources目录下。
3.在yml文件中设置:
server:
port: 6206
ssl:
key-store: classpath:zpstore.jks
key-password: 215031325920305
4.在浏览器中访问https://localhost:6206/mainbody/list即可
5. 在spring-cloud中http登录跳转https方法,两种方法:
第一种:新建一个文件:加入如下代码即可实现跳转(优先):
@Configuration
public class HttpToHttps {
@Bean
public Connector connector(){
Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(80);
connector.setSecure(false);
connector.setRedirectPort(443);
return connector;
}
@Bean
public EmbeddedServletContainerFactory servletContainerFactory(){
TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory(){
@Override
protected void postProcessContext(Context context) {
super.postProcessContext(context);
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
containerFactory.addAdditionalTomcatConnectors(connector());
return containerFactory;
}
}
第二种:加入有色代码即可实现跳转:
public class ApiGatewayApplication {
public static void main( String[] args ) {
new SpringApplicationBuilder(ApiGatewayApplication.class).web(true).run(args);
}
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
return tomcat;
}
// 配置http,这里如果https用的是443,http用80的话,则输入http直接跳转到https,不需要加端口号。因为都是默认的,8008跳转到8606,可设置80的http跳转到https的443端口。
private Connector createStandardConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8008);
connector.setSecure(false);
// 监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(8606);
return connector;
}
}
6、在tomcat中设置做http转发https,在修改web.xml文件配置,在<web-app>标签内最下方,添加如下代码,即与<welcome-file-list>同一级的下方:
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>