https://blog.csdn.net/a_squirrel/article/details/79729690html
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,所以加密的详细内容就须要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL代表它使用了HTTP,但HTTPS存在不一样于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通信方法。如今它被普遍用于万维网上安全敏感的通信,例如交易支付方面。 java
1. 首先须要SSL证书,能够本身生成(浏览器不承认),也可购买。linux
2. 本身生成方法(不推荐):https://www.cnblogs.com/zhangzb/p/5200418.htmlnginx
3. 免费一年证书(推荐):https://buy.cloud.tencent.com/ssl?fromSource=sslgit
4. 下载完成后解压目录以下:github
springcloud(springboot)通常默认嵌入tomcat中间件(服务器),若是有其余中间件选择对应文件夹下就好。web
tomcat打开以下:.jks证书文件, keystorePass.txt 为证书秘钥spring
5. 将证书文件放入要添加https服务的resources下,通常为web层服务,而后打开springcloud(springboot)配置文件application/bootstarp.yml(properties)apache
server.port 注册服务端口也是项目访问端口 server.ssl.key-store 证书路径 server.ssl.key-store-password 秘钥(.txt中内容) http.port 作转发的端口,若是不作端口转发能够不用配置,名字能够随便起 ,端口号也可自定义(不要冲突就好)。接下来直接启动服务便可,而后便可用https://+项目路径,进行访问。浏览器
6. https配置类编写(不作端口转发能够不写)
注意:若是项目配置文件中同时有management.port,须要将其注释掉,否则没法启动服务。
/** * @Title: HttpsPort.java * @Description: 添加https * @author zxj * @version V1.0 */ package com.ewp.data.config; import org.apache.catalina.Context; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * @ClassName: HttpsPort * @Description: 添加https * @date 2018年3月14日 * */ @Configuration public class HttpsPort { @Value("${server.port}") private int sPort; @Value("${http.port}") private int hPort; private static class Tomcat extends 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); } } @Bean public EmbeddedServletContainerFactory servletContainer() {// 建立新的tomcat示例,指向定义的http链接 Tomcat tomcat = new Tomcat(); tomcat.addAdditionalTomcatConnectors(httpConnector()); return tomcat; } @Bean public Connector httpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(hPort); connector.setSecure(false); connector.setRedirectPort(sPort); return connector; } }
1.打开linux下Nginx安装目录找到配置文件nginx.conf(通常路径为:/usr/local/nginx/conf)进行以下配置
# HTTPS server
server {
listen 443 ssl;#网页浏览端口,主要是用于HTTPS服务 server_name www.asquirrel.cn asquirrel.cn;#顶级域名,二级域名 ssl on; ssl_certificate 1_asquirrel.cn_bundle.crt;#证书路径 ssl_certificate_key 2_asquirrel.cn.key;#证书秘钥路径 ssl_session_timeout 5m; fastcgi_param HTTPS on; fastcgi_param HTTP_SCHEME https; location / { proxy_pass https://ewp_web_contract; #代理转发的路径 proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; error_page 502 = /500.html; } }
2.将下载好的证书放在与nginx.conf同级目录下,可新建文件夹,也可不建
证书用Nignx文件夹下的,不要用其余文件夹下的
3.监听80端口,转发请求
server { listen 80; server_name asquirrel.cn;#访问的路径 if ($host != 'www.asquirrel.cn') { rewrite ^/(.*)$ https://www.asquirrel.cn/$1 permanent;#转发的路径 } }
4.项目web模块需作以下配置(主要做用于项目内部进行https交互)
第一:添加tomcat文件夹下的证书
第二:配置application.properties
五:重启项目web层服务和Nignx,访问域名就能够看到浏览器显示安全标志
GitHub:https://github.com/acutesquirrel/spring-cloud/tree/master/add-https