因为网站需要调用摄像头,在本地测试的时候是可以在笔记本的chrome浏览器弹出询问窗口,打开摄像头,可是把项目布置到服务器上发现打不开,经查找,可能是网站的安全性问题,所以尝试加上SSL证书。
第一步:
第二步:
第三步:
下载选择的证书,并放入项目里面
server:
port: 443
ssl:
key-store: classpath:static/ssl.pfx
key-store-password: RlvKJ6jC
key-store-type: PKCS12
enabled: true
第四步:开启服务器上的443端口
第五步:如果需要http自动变成https,需要在项目启动类里面加上
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
private Connector httpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(80);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(443);
return connector;
}
遇到的坑:
遇到这个报错Unable to Start embedded TomCat,可能原因:
1.证书的名字太长也会报错,索性直接改成ssl了
2.证书放置的路径,一开始直接放到resource下面,没有读到。最后放到static下面才成功
遇到due to multiple ServletWebServerFactory beans,可能原因:
有两个servlet启动,全局搜索一下,肯定在哪边也配置了TomcatServletWebServerFactory ,把上面的代码放到以前就有的配置中即可