网站配置https有什么用?
这是因为近些年,没有安装https的网站以及网站配置https的安全等级不够的话,都曾经遭遇过黑客的攻击,造成了不少用户信息泄露和信息篡改等情况
HTTP是明文传输,HTTPS是加密传输。HTTPS有身份验证和数据传输加密的作用,保护网站安全。安装SSL证书即可实现网站https访问,GDCA可以申请免费SSL证书,还有付费的Symantec、GeoTrust、GlobalSign
Springboot配置https访问:
1.首先去腾讯云或者阿里云申请免费ssl证书,以腾讯云为例,不建议自己生成,因为没办法测试发布环境的效果,填写个人信息,最后提示审核中才是申请成功,审核比较快,半小时就通过了。
2.下载已经通过审核的证书文件夹,解压文件如下,根据项目选择使用,
3.因为springboot使用的是内置tomcat,所以我这边选择tomcat文件,在resources目录下导入xxx.jks
4.接下来配置properties文件,密码在同文件夹的keystorePass.txt中(腾讯云)
5.个人比较喜欢yml格式,简洁直观(阿里云)
6.到这个时候基本配置完成,但不能使用https后就通知所有人重新保存网址,这时候就需要增加请求转发,自动从http转到https
写法一:在启动类也就是@SpringBootApplication注解类中加上使用
/** * http重定向到https * @return */ @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; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); //Connector监听的http的默认端口号 connector.setPort(8080); connector.setSecure(false); //监听到http的端口号后转向到的https的端口号,也就是项目配置的port connector.setRedirectPort(8089); return connector; }
写法二:另外新建一个配置类,加上@Configuration注解声明
@Configuration public class TomcatConfig { @Bean TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() { TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(){ @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); } }; factory.addAdditionalTomcatConnectors(createTomcatConnector()); return factory; } private Connector createTomcatConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(5001); connector.setSecure(false); connector.setRedirectPort(443); return connector; } }
7.现在可以通过https://域名:8089/index访问,这样就看到熟悉的小锁了
8.通过域名访问失败原因及解决办法
- 域名未配置解析,去域名管理配置解析,10分钟后通过ping 域名看是否显示ip,显示则解析成功!
- 域名未认证,去域名管理上传个人信息进行域名实名!
- 域名已实名但未网站未备案,解决办法
- 去进行网站实名,使用腾讯云小程序认证进行icp备案即可!
- 可以通过域名访问但必须加上自定义端口才行,不能使用8080或443等默认端口,否则提示连接已重置!