10张流程图+部署图,讲透单点登录原理与简单实现!

作者:凌承一

原文:www.cnblogs.com/ywlaker/p/6113927.html

 

 

一、单系统登录机制

 

1、http无状态协议

 

web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必须鉴别浏览器请求,响应合法请求,忽略非法请求;要鉴别浏览器请求,必须清楚浏览器请求状态。既然http协议无状态,那就让服务器和浏览器共同维护一个状态吧!这就是会话机制

 

2、会话机制

 

浏览器第一次请求服务器,服务器创建一个会话,并将会话的id作为响应的一部分发送给浏览器,浏览器存储会话id,并在后续第二次和第三次请求中带上会话id,服务器取得请求中的会话id就知道是不是同一个用户了,这个过程用下图说明,后续请求与第一次请求产生了关联

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

服务器在内存中保存会话对象,浏览器怎么保存会话id呢?你可能会想到两种方式

 

  1. 请求参数

  2. cookie

 

将会话id作为每一个请求的参数,服务器接收请求自然能解析参数获得会话id,并借此判断是否来自同一会话,很明显,这种方式不靠谱。那就浏览器自己来维护这个会话id吧,每次发送http请求时浏览器自动发送会话id,cookie机制正好用来做这件事。

 

cookie是浏览器用来存储少量数据的一种机制,数据以”key/value“形式存储,浏览器发送http请求时自动附带cookie信息

 

tomcat会话机制当然也实现了cookie,访问tomcat服务器时,浏览器中可以看到一个名为“JSESSIONID”的cookie,这就是tomcat会话机制维护的会话id,使用了cookie的请求响应过程如下图

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

3、登录状态

 

有了会话机制,登录状态就好明白了,我们假设浏览器第一次请求服务器需要输入用户名与密码验证身份,服务器拿到用户名密码去数据库比对,正确的话说明当前持有这个会话的用户是合法用户,应该将这个会话标记为“已授权”或者“已登录”等等之类的状态,既然是会话的状态,自然要保存在会话对象中,tomcat在会话对象中设置登录状态如下

 

HttpSession session = request.getSession();
session.setAttribute("isLogin", true);

 

用户再次访问时,tomcat在会话对象中查看登录状态

 

HttpSession session = request.getSession();
session.getAttribute("isLogin");

 

实现了登录状态的浏览器请求服务器模型如下图描述

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

每次请求受保护资源时都会检查会话对象中的登录状态,只有 isLogin=true 的会话才能访问,登录机制因此而实现。

 

二、多系统的复杂性

 

web系统早已从久远的单系统发展成为如今由多系统组成的应用群,面对如此众多的系统,用户难道要一个一个登录、然后一个一个注销吗?就像下图描述的这样

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

web系统由单系统发展成多系统组成的应用群,复杂性应该由系统内部承担,而不是用户。无论web系统内部多么复杂,对用户而言,都是一个统一的整体,也就是说,用户访问web系统的整个应用群与访问单个系统一样,登录/注销只要一次就够了

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

虽然单系统的登录解决方案很完美,但对于多系统应用群已经不再适用了,为什么呢?

 

单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器与服务器之间维护会话状态。但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送http请求时会自动携带与该域匹配的cookie,而不是所有cookie

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

既然这样,为什么不将web应用群中所有子系统的域名统一在一个顶级域名下,例如“*.baidu.com”,然后将它们的cookie域设置为“baidu.com”,这种做法理论上是可以的,甚至早期很多多系统登录就采用这种同域名共享cookie的方式。

 

然而,可行并不代表好,共享cookie的方式存在众多局限。首先,应用群域名得统一;其次,应用群各系统使用的技术(至少是web服务器)要相同,不然cookie的key值(tomcat为JSESSIONID)不同,无法维持会话,共享cookie的方式是无法实现跨语言技术平台登录的,比如java、php、.net系统之间;第三,cookie本身不安全。

 

因此,我们需要一种全新的登录方式来实现多系统应用群的登录,这就是单点登录

 

三、单点登录

 

什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

 

1、登录

 

相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。

 

间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。这个过程,也就是单点登录的原理,用下图说明

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

下面对上图简要描述

 

  1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

  2. sso认证中心发现用户未登录,将用户引导至登录页面

  3. 用户输入用户名密码提交登录申请

  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌

  5. sso认证中心带着令牌跳转会最初的请求地址(系统1)

  6. 系统1拿到令牌,去sso认证中心校验令牌是否有效

  7. sso认证中心校验令牌,返回有效,注册系统1

  8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源

  9. 用户访问系统2的受保护资源

  10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数

  11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌

  12. 系统2拿到令牌,去sso认证中心校验令牌是否有效

  13. sso认证中心校验令牌,返回有效,注册系统2

  14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源

 

用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系

 

  1. 局部会话存在,全局会话一定存在

  2. 全局会话存在,局部会话不一定存在

  3. 全局会话销毁,局部会话必须销毁

 

你可以通过博客园、百度、csdn、淘宝等网站的登录过程加深对单点登录的理解,注意观察登录过程中的跳转url与参数

 

2、注销

 

单点登录自然也要单点注销,在一个子系统中注销,所有子系统的会话都将被销毁,用下面的图来说明

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

so认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作

 

下面对上图简要说明

 

  1. 用户向系统1发起注销请求

  2. 系统1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求

  3. sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址

  4. sso认证中心向所有注册系统发起注销请求

  5. 各注册系统接收sso认证中心的注销请求,销毁局部会话

  6. sso认证中心引导用户至登录页面

 

四、部署图

 

单点登录涉及sso认证中心与众子系统,子系统与sso认证中心需要通信以交换令牌、校验令牌及发起注销请求,因而子系统必须集成sso的客户端,sso认证中心则是sso服务端,整个单点登录过程实质是sso客户端与服务端通信的过程,用下图描述

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

sso认证中心与sso客户端通信方式有多种,这里以简单好用的httpClient为例,web service、rpc、restful api都可以

 

五、实现

 

只是简要介绍下基于java的实现过程,不提供完整源码,明白了原理,我相信你们可以自己实现。sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现的功能(下面:sso认证中心=sso-server)

 

sso-client

 

  1. 拦截子系统未登录用户请求,跳转至sso认证中心

  2. 接收并存储sso认证中心发送的令牌

  3. 与sso-server通信,校验令牌的有效性

  4. 建立局部会话

  5. 拦截用户注销请求,向sso认证中心发送注销请求

  6. 接收sso认证中心发出的注销请求,销毁局部会话

 

sso-server

 

  1. 验证用户的登录信息

  2. 创建全局会话

  3. 创建授权令牌

  4. 与sso-client通信发送令牌

  5. 校验sso-client令牌有效性

  6. 系统注册

  7. 接收sso-client注销请求,注销所有会话

 

接下来,我们按照原理来一步步实现sso吧!

 

1、sso-client拦截未登录请求

 

java拦截请求的方式有servlet、filter、listener三种方式,我们采用filter。在sso-client中新建LoginFilter.java类并实现Filter接口,在doFilter()方法中加入对未登录用户的拦截

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
   HttpServletRequest req = (HttpServletRequest) request;
   HttpServletResponse res = (HttpServletResponse) response;
   HttpSession session = req.getSession();
   
   if (session.getAttribute("isLogin")) {
       chain.doFilter(request, response);
       return;
   }
   //跳转至sso认证中心
   res.sendRedirect("sso-server-url-with-system-url");
}

 

2、sso-server拦截未登录请求

 

拦截从sso-client跳转至sso认证中心的未登录请求,跳转至登录页面,这个过程与sso-client完全一样

 

3、sso-server验证用户登录信息

 

用户在登录页面输入用户名密码,请求登录,sso认证中心校验用户信息,校验成功,将会话状态标记为“已登录”

 

@RequestMapping("/login")
public String login(String username, String password, HttpServletRequest req) {
   this.checkLoginInfo(username, password);
   req.getSession().setAttribute("isLogin", true);
   return "success";
}

 

4、sso-server创建授权令牌

 

授权令牌是一串随机字符,以什么样的方式生成都没有关系,只要不重复、不易伪造即可,下面是一个例子

 

String token = UUID.randomUUID().toString();

 

5、sso-client取得令牌并校验

 

sso认证中心登录后,跳转回子系统并附上令牌,子系统(sso-client)取得令牌,然后去sso认证中心校验,在LoginFilter.java的doFilter()中添加几行

 

// 请求附带token参数
String token = req.getParameter("token");
if (token != null) {
   // 去sso认证中心校验token
   boolean verifyResult = this.verify("sso-server-verify-url", token);
   if (!verifyResult) {
       res.sendRedirect("sso-server-url");
       return;
   }
   chain.doFilter(request, response);
}

 

verify()方法使用httpClient实现,这里仅简略介绍,httpClient详细使用方法请参考官方文档

 

HttpPost httpPost = new HttpPost("sso-server-verify-url-with-token");
HttpResponse httpResponse = httpClient.execute(httpPost);

 

6、sso-server接收并处理校验令牌请求

 

用户在sso认证中心登录成功后,sso-server创建授权令牌并存储该令牌,所以,sso-server对令牌的校验就是去查找这个令牌是否存在以及是否过期,令牌校验成功后sso-server将发送校验请求的系统注册到sso认证中心(就是存储起来的意思)

 

令牌与注册系统地址通常存储在key-value数据库(如redis)中,redis可以为key设置有效时间也就是令牌的有效期。redis运行在内存中,速度非常快,正好sso-server不需要持久化任何数据。

 

令牌与注册系统地址可以用下图描述的结构存储在redis中,可能你会问,为什么要存储这些系统的地址?

 

如果不存储,注销的时候就麻烦了,用户向sso认证中心提交注销请求,sso认证中心注销全局会话,但不知道哪些系统用此全局会话建立了自己的局部会话,也不知道要向哪些子系统发送注销请求注销局部会话

 

10张流程图+部署图,讲透单点登录原理与简单实现!

 

7、sso-client校验令牌成功创建局部会话

 

令牌校验成功后,sso-client将当前局部会话标记为“已登录”,修改LoginFilter.java,添加几行

 

if (verifyResult) {
   session.setAttribute("isLogin", true);
}

 

sso-client还需将当前会话id与令牌绑定,表示这个会话的登录状态与令牌相关,此关系可以用java的hashmap保存,保存的数据用来处理sso认证中心发来的注销请求

 

8、注销过程

 

用户向子系统发送带有“logout”参数的请求(注销请求),sso-client拦截器拦截该请求,向sso认证中心发起注销请求

 

String logout = req.getParameter("logout");
if (logout != null) {
   this.ssoServer.logout(token);
}

 

sso认证中心也用同样的方式识别出sso-client的请求是注销请求(带有“logout”参数),sso认证中心注销全局会话

 

@RequestMapping("/logout")
public String logout(HttpServletRequest req) {
   HttpSession session = req.getSession();
   if (session != null) {
       session.invalidate();//触发LogoutListener
   }
   return "redirect:/";
}

 

sso认证中心有一个全局会话的监听器,一旦全局会话注销,将通知所有注册系统注销

 

public class LogoutListener implements HttpSessionListener {
   @Override
   public void sessionCreated(HttpSessionEvent event)
{}
   @Override
   public void sessionDestroyed(HttpSessionEvent event)
{
       //通过httpClient向所有注册系统发送注销请求
   }
}

 

·END·

转自:https://mp.weixin.qq.com/s/WV6dhQ34wWUAeiTaipisIA

信创产业分析

二 行业与公司分析

 

半导体经过反复爆炒后,短期恐怕要沉寂一段时间了。老安前面多次提到的信创产业,和半导体同样具备国产替代逻辑。

 

中期来看,信创的确定性更强。原因在于行业的下游市场掌握在我们自己手中。目前,信创先行的2+8安全可控体系由我们自己掌控,在国家大力支持下,资金有充足保障,有利于整个行业推进。

此外,信创主要在国内厂商之间竞争,在中国电子、中国电科和华为等领导下,竞争不算激烈,预计相关上市公司能够获得较好的利润,充分受益于信创的发展。


因此,信创在业绩兑现上,可能比半导体更快看到效果,借此机会,也向各位读者大人汇报一下行业的最新进展。

 

信创是信息技术应用创新的简称。信创产业主要包括新一代信息技术下的云计算、软件(操作系统、中间件、数据库、各类应用软件)、硬件(芯片、GPU/CPU、主机、各类终端)、安全(网络安全)等领域,涵盖了从IT底层基础软硬件到上层应用软件的全产业链的安全可控、自主创新等重要课题。

 

整个行业的发展背景主要有两点,一个是国家的信息安全,过去中国 IT 底层标准、架构、产品、生态由外资企业主导,存在诸多安全问题。

 

第二个就是卡脖子的风险,美帝对我们的封锁越来越厉害,从硬件到软件,欺人太甚!逼着我们必须逐步建立基于自己的 IT 底层架构和标准,促使信创产业加速升级,自主创新与国产化成为大势所趋。

 

为此,国家提出“2+8”安全可控体系。其中2是指党政两大体系,而8是指金融、石油、电力、电信、交通、航空航天、医院、教育等八大主要行业。

 

2020-2022年是国家安全可控体系推广最重要的3年,中国IT产业从基础硬件-基础软件-行业应用软件有望迎来国产替代潮,必然也会带来很多投资机会。

 

市场空间:

 

基础IT有着几万亿市场,整个中国在基础IT领域才刚刚开始,信创行业对应着万亿级别的市场空间,据统计,我国自主可控的市场规模2020年为1.05万亿,2025年市场规模将增长到1.3万亿。

 

今年以来,以运营商、银行为代表的行业信创陆续启动,未来交通、能源、电力、医疗、教育、公共事业等行业信创都将全面推进。5月7日中国电信公布2020年服务器集中采购项目货物招标集中资格预审公告,其中H系列(华为鲲鹏920处理器或海光Hygon Dhyana处理器)11,185台,占比19.86%。

 

5月底6月初,以移动、电信为代表的运营商和国有大行如农行的公开招标中,信创占比提升。从行业角度来讲,电信、移动的集采中20%的份额给到基于国产芯片的服务器,这是超预期的。

 

大家可以想一下,像电信部门这种对性能要求很高的行业,都能给国产的产品这么大的比例,足以说明国产替代已经比较成熟了。

 

而党政部门肯定会比行业推的更快,落地更多,因为办公系统的性能要求其实是更低一些的。后面各个省推进的进度和体量都有可能超预期,整个党政体系,未来三五年,算上业务系统,大概有5、6千亿市场。

 

从进度来看,上半年虽然受到疫情的影响,但下半年各个省招标开始进入落地期,七八月份很多招标的量开始浮出水面,那么整个板块会有非常多的催化剂。这个时间节点大家要多留意。

竞争格局

 

信创市场容量大,竞争格局是关键。从竞争格局来看,今年有一些变化。比如芯片,去年龙芯的份额很高,但性能比飞腾(中国长城)落后。

 

今年由于华为受到美国政府的限制升级,加上海光(中科曙光)参与pc端比较少,未来主要用在行业部门服务器那边,所以今年飞腾的量估计会上来。

 

加上中国电子集团通过产业集群来带动芯片和操作系统业务推进,整个量会比市场预期提升很多,所以芯片这块,飞腾的量可能会多出来不少,毛估估比之前市场预期的份额多出50%-60%吧。

 

行业部门这边,海光和鲲鹏性能更加突出。华为受制裁,对鲲鹏发展影响很大,不过鲲鹏这两年备货充足,未来最差情况也可以采取ip授权模式,虽然对海思不利,但是产业链上的神州数码作为服务器合作伙伴,还是可能受益。

 

操作系统这边来看,UOS、麒麟操作系统成为国产化主流。目前诚迈科技持有统信软件 44.44%股权,统信软件作为 UOS 业务主体开展研发和销售业务。

就市占率而言,中国软件的中标麒麟操作系统市占率持续领先,估计中软在党政口份额会占到六七成左右,会高于市场预期。

 

未来由于中软在操作系统和服务器的领先性,估计在行业部门也能拿到一半左右的份额,这也是可能会超预期的。

 

整个信创里,份额现在最确定的就是办公软件,金山办公一家独大。金山是在跟微软的竞争中脱颖而出的,产品的好用性获得了广大用户,再加上现在在b端的推广,优势越来越明显。

 

目前金山在国内的用户数占比40%多,数量每年还在不断提升。在国产化的大风口下,未来确定性特别强,不管是产品本身,还是用户生态,比竞争对手遥遥领先,所以金山也是信创产业里面市值最大,走的最稳的公司,因为从长期来看其格局和份额最清楚。

 

中间件环节主要就看东方通。公司在党政部门方面有很强的渠道布局。目前党政部门的中间件是通过集成商代理或集成商招标来实现销售的。因此其他做中间件的公司在短期内很难追赶。

 

东方通在党政的份额有希望达40%-50%。在电信和金融领域,东方通过去几年也做了布局,目前收入在非党政行业占比大概是20%-30%左右,这个行业的缺点是价格竞争压力在加大。

 

数据库环节,做党政部门数据库的主要就三家,人大金仓,武汉达梦,神州通用。前两家都有上市母公司,人大金仓在太极股份下面,武汉达梦在中国软件下面。目前三家的产品本身没有很大差异,关键看公司在党政部门的渠道能力。

 

从这点来看,太极股份强一些,它在部委口的影响力比另外两家要强很多,另外太极去年加强了省市一级的布局,今年估计人大金仓在数据库这块有望拿到40%以上的份额。

 

值得一提的是,数据库在整个b端的市场是中间件的两倍,甚至比操作系统还要大些。数据库一年有200亿左右的市场,每年还有20%多的复合增速,那么五年以后就会是一个300多亿的市场,前面几家公司在行业里面占到20%-30%的市场份额,那么光是数据库的业务,未来都有比较大的成长空间。

 

信息安全也是信创的关键环节。从数据上看,行业一季度受疫情影响出现负增长,但集中度出现提升趋势。

 

当前市场对安全行业的担心来自政府削减财政支出,而行业以政府、企事业单位付费为主,今年是否会受到较大的预算影响?

 

实际上不会,信息安全在IT预算中占比很小,而且属于刚需,几乎不会受到影响,从4-5月订单就可验证。整个安全行业保持20%的复合增速,显示出国家对信息安全的重视程度是非常高的,不用担心经济对信息安全行业的发展影响。

 

而且行业还有一个潜在的催化因素,有机构认为,11月美国总统大选前,川普可能会加强力度推倒中国大陆网络防火墙,相应中方势必展开攻防战,信息安全相关公司比如深信服、启明星辰、安恒信息、中孚信息等值得关注。

 

从走势来看,信创板块在今年横了很久,表现在整个计算机板块里面不算突出。特别是在五六月份发生了一次很大的回调,市场对政府支出和行业的价格战都有担忧,但是现在来看,之前的很多担心都在被实际落地的情况给排除掉了,板块的确定性越来越强。

 

总的来说,信创产业已经诞生了市场上公认优秀的公司,比如金山办公,不管是从产品能力还是市场份额和竞争格局,基本上是大家公认的计算机板块里面没有瑕疵的公司。

 

过去几年,也诞生了中国软件这样的10倍股,说明这个行业还是有很多投资机会的。不过这个行业确实比较新,竞争格局还不明朗,在投资策略上,单独去押注一家公司风险比较大,这种情况更加适合用行业配置一揽子股票的思路,这样可以消除选股风险,获取行业beta的收益。

 

最近有读者反应,腾讯的规则改了,不是按时间先后推送,下方的点赞、在看都是读者活跃度指标,表示各位读者大人已阅,同意,平时要养成多点几下的习惯,不然可能收不到老安的文章。

GDP反弹,降息落空,楼市从严!释放了什么信号?

◎作者 | 凯风

◎来源 | 国民经略

 

2020年下半年,中国经济正在发生一些重大变化。

GDP反弹,降息落空,楼市从严!释放了什么信号?

GDP增速转正,实现反弹。

7月16日,国家统计局发布上半年经济数据:

2020年上半年,我国GDP为456614亿元,按可比价格计算,同比下降1.6%。

其中,一季度同比下降6.8%,二季度增长3.2%,经济增速转正。

GDP反弹,降息落空,楼市从严!释放了什么信号?

这一成绩虽然无法与过去相提并论,但置于疫情全球大流行的环境中,中国取得的增长显得相当突出。

根据IMF(国际货币基金组织)最新发布的预测,2020年全球增长率预计为–4.9%,欧美国家将大幅度下滑,而中国可能是为数不多保持正增长的国家。

GDP反弹,降息落空,楼市从严!释放了什么信号?

这与中国疫情迅速得到控制有关,也离不开以“六稳”和“六保”为主的托底政策。

经济复苏在路上,最难时刻已经过去。

GDP反弹,降息落空,楼市从严!释放了什么信号?

降息,大概率再度落空。

 

就在本周,央行开展了4000亿元中期借贷便利(MLF)操作,利率为2.95%,此前为2.95%,利率保持不变。

这一利率已经连续3个月保持不变,这意味着LPR降息大概率再一次落空。

 

MLF,俗称“麻辣粉”,是央行向市场投放流动性的主要工具之一。MLF利率,一般被视为实体利率(1年期LPR利率)和楼市利率(5年期LPR利率)的先行指标。

这一政策动向早有迹象。毕竟,经济从“危机模式”步入“复苏模式”,货币政策自然也从“救市模式”转化为“正常模式”,放水空间必然随之收缩。

这从近日央行等主管部门的表述就可见一斑:

 

下半年货币政策更加灵活适度,我们现在更加强调适度这两个字。

一个含义是总量上要适度,如果信贷投放节奏过快的话,快于经济复苏就会产生资金淤积,产生信贷资金没法有效使用的问题。

第二个是价格上要适度。一方面要引导融资成本进一步降低,同时也要认识到利率适当下行并不是利率越低越好,利率过低也是不利的,会产生套利问题,产生资金可能流向不应该流向领域的问题。

这段话表达的信号再清晰不过:一个是货币松绑不再是大水漫灌,而要“适度”;

另一个是利率不能一味下行,谨防套利和资金违规流入不该流入的领域。这里所谓的“不该流向的领域”,自然指的是楼市和股市。

作为佐证的是,前不久,银保监会出面表态,《股市、楼市都被“警告”了》。

GDP反弹,降息落空,楼市从严!释放了什么信号?

新一轮楼市调控已经卷土重来。

这两天,深圳楼市调控升级的靴子终于落地,带来的影响不容低估。

 

深圳版调控堪称史上最严,无论是“落户三年方能购房”,还是“满5年方能免征增值税”、“豪宅税新增750万门槛”,都打中了楼市投机的七寸。

GDP反弹,降息落空,楼市从严!释放了什么信号?

深圳新政,给正在蠢蠢欲动的地方楼市打了当头一棒,可谓是对“房住不炒”的再度重申,标志着“稳楼市”的红线所在。

 

楼市调控从严从紧,与央行降息搁浅一道,让个别出现过热苗头的楼市,遭遇了釜底抽薪式的冲击。

 

毕竟,限购、限贷和降息才是楼市的命脉所在,把握好这三个政策,就能控制楼市的走向。

 

所以,基于经济复苏的需要,实体经济可能还会继续降息,但楼市,恐怕很难再重演2009年和2015年的大水漫灌了。

◎本文作者 | 凯风

 

都是老师教得好

 

 

2011年,因为一本官场小说的出版,长沙一本杂志的总编黄晓阳火了。一位县委书记看完书后对他说:



你把桌子下面的东西,放到桌子上面了。



其实黄晓阳一天官也没当过。他没有正式编制,认识最高级别的官员,也就是广电局局长。但他写的“官场教科书”,用大量细节描写,让不少官员折服。

 

包叔对政治的了解,就是被这本小说启蒙的。比如,他说,高层领导办公室的门总是紧闭的,次一级领导的门是虚掩着的,中层领导的门是半开着的,小领导的门一直是敞开着的。

 

这种描述实在太有道理了,包叔好友兽爷很快就把家里的门都拆掉了。

 

包叔印象最深的,是担任领导秘书的主人公,听了别人的建议,借了银行一大笔钱在省会雍州买了五六十套房产。

 

给他建议的那个人,是听到了省委的内部消息,自己投资了好几块地,结果只有一块地涨价。俩人最后只能无奈地感慨:



在楼市上雍州有点滞后。



书中的江南省,原型是湖南,雍州就是长沙。多年来,这里一直是中部地区的房价洼地。就算过去二线城市最炙热的两年,长沙房价也被控制得死死的。

 

长沙的房价是真的拉不动,这不是虚构小说啊。

 

 

1

 

 

去年年底,长沙市委党校第55期中青班赴深圳学习,学员们不仅深切感受了“中国特色社会主义先行示范区”的独特魅力,还找到了差距、明确了方向。

 

但七个月后,老师和学生的角色调转了。

 

一周前的7月8日,深圳市住建局一行10人前往长沙住建局考察交流。要知道深圳的经济总量是长沙的2.7倍。

 

通稿说,深圳考察组对长沙房地产调控和房地产市场监管工作成效、先进经验和典型做法,给予高度评价。

 

在考察组去长沙的四天之前,住建部副部长赴深圳调研,并和深圳市住建局、当地开发商和中介代表开了一个市场调研会。

 

那几天深圳的氛围,跟2017年3月调控前的北京和厦门,太像了。

 

昨天早晨,深圳终于公布了调控政策。限购、限贷、加税三盘硬菜,一次性全端到桌子上了。

 

中国改革开放的带头大哥、先行示范区的模范生,把长沙一揽子调控政策的作业,一股脑儿照抄了过去。

 

以前落户就能买房,现在要落户满三年且连续缴纳36个月社保或个税;新政甚至试图堵上炒房客的假离婚手段:



离婚3年内,按离婚前的住房套数计算。



深圳的限购政策,仅次于北京和上海,终于和自己的身份匹配了。

 

8个月前,深圳还不是这样的。

 

2019年双十一,在楼市没有任何遇冷趋势的情况下, 深圳把144平米以下住宅的豪宅线取消了,上调了豪宅税的门槛;一个月后,又取消了商务公寓“只租不售”的政策。

 

这两项政策,让很多人都认为深圳先行示范区的旗帜会继续飘扬:



有深圳这个标杆在,才会给其他城市以信心。



过去的八个月,是深圳楼市的第二春。所有人都知道深圳涨了,春江水暖,鸭子都快被煮熟了,但深圳的官方数据还一直嘴硬。

 

根据官方的数据,深圳的6月份房价相比去年同期涨了百分之五,但连包叔这么后知后觉的人都知道,数字是可以操纵的。

 

一旦发现房价有上涨的趋势,就控制高价房的网签,而增多低价房的网签,把均价打下来。这已经是政府的常用手段了。

 

但二手房是没法骗人的,深圳上半年二手房的涨幅,居然还能位居全国第二。

 

深圳历史上最严厉的限购政策,都可以在长沙这个780公里以外的二线城市找到源头。

 

一位长沙的开发商朋友看到深圳的政策后,为深圳人民松了一口气:



放心,按长沙的做法,一把就可以控住了。



 

2

 

 

深圳住建局领导们到长沙调研的第二天,就有长沙市民在市长信箱留言说,自己不缺钱,为啥买不到好的房子。政府各种限价地,让房子又便宜又差。

 

如果孩子以后去了一线城市,武汉卖一套就能在北京付首付,我要卖两套。



长沙房价为什么不能涨起来!!!

 

这位市民三个感叹号,换来了住建局回复的三个倔强的“不”:长沙的调控,方向不变、目标不减、力度不松。

 

去年,有个33岁的大龄单身青年跑到政府网站上“问政湖南”栏目下,向领导哭诉,恳求给大龄未婚刚需们提供一点点空间,他们也想要资格。

 

长沙楼市是不相信眼泪的。

 

2018年6月,《湖南日报》连发4篇评论文章,称“决不能让长沙成为投机者的乐园”:



当前长沙房地产市场调控的主要矛盾不是供需矛盾,而是炒房与反炒房的重大斗争。



2016年下半年,来自南京、合肥、南昌的阔佬们,实在无法直视长沙房价低到不可思议的现实,他们携带巨额资金,杀向湘江。

 

在炒房团的携手努力下,长沙房价正式开始迅猛增长,但也只是从均价6600元左右上涨到2017年年中的9000元左右。

 

此时的武汉,市区房价已经达到每平方米16000元,河北燕郊房价则历史性冲到了4万元。

 

但马上,一系列的调控政策砸向了长沙楼市。

 

四年的限售期;离婚两年内购房算原有家庭的住房总套数;外来人才落户长沙后,也要交满一年社保才能购房。

 

一波波在其他城市无所不能的炒房团,被摁倒在湘江边。北辰实业2007年在长沙新河三角洲拿下的92亿元的地王,距今已经13年了,还在慢悠悠地开盘,也不知道他们在等什么。

 

前年,融信中国第一次进入长沙,打造了融信澜悦项目。以前,这家房企做得最对的事情是重仓杭州,对于外埠拓展,其实他们一直比较谨慎。他们的一个高管是在无意间透露了对这个城市的看法:



全国横向比,长沙房价低的不可思议。



 

3

 

 

过去五年,长沙的GDP从八千多亿元,冲到了万亿。

 

有人不客气地指出,虽然长沙GDP冲得很猛,但税收与GDP的比例值,长沙排名全国倒数第三。

 

但这些都不重要。过去五年,有将近100万人涌入了这个中部省会城市,和西安差不多。

 

大家都能看到这个城市最吸引人的地方是什么。房地产最疯的三年,GDP万亿级城市,房价只涨了700块钱,现在均价还是一万上下。别说比隔壁的南昌老表矮了一大截,甚至比不上很多县城的房价。

 

帝都毁一生,魔都毁三代,要是来长沙,必成高富帅。

 

和楼市喧哗的杭州、深圳相比,这里真是个祥和的城市。2016年9月30日中国开启的调控大潮,在长沙演变成了最极致的、最到位的政策试验,比如这条:

 

当楼盘申购人数超过1.5倍,优先满足刚需群体,其他购房申请人不纳入刚需摇号范围。



非长沙户籍必须24个月不间断缴纳社保或个税,才算刚需。炒房客的那点小九九,长沙政府都懂的。

 

而且。等你终于成为刚需的一员时,还要看刚需的成色。

 

就算最懂事的杭州,也是在整整两年后,才把对刚需和无房户的倾斜写进政策里的。

 

这种用市场解决保障住房的手段,是长沙的首创,无疑也是经济学上的奇迹。经济学家想要解决的均衡价格理论与现实的矛盾,在长沙被完美地解决:



供给正好等于需求。



政策颁布2个月后,中建梅溪嘉苑项目开盘,排名第一的购房者,出生日期为1936年7月17日。此前,另一楼盘排名第一的购房者,出生日期是1929年1月14日。

 

想要在长沙参与摇号,你要寄希望于家里有一位民国时期出生的老人。几乎每次开盘,也都会有一部分六七十岁的老人,领衔刚需人群。

 

这是政治经济学的胜利,也是深圳楼市严重欠缺的知识点。

 

包叔的好友兽爷说,人生的重要关口,我们往往需要仙人指路,才能解决很多困惑。

 

 

4

 

 

深圳和长沙,过去几年是互为镜像的存在。

 

长沙向大家证明,只要政府愿意去管,房价是真的可以控制住的。后来,越来越多的城市成了长沙,深圳的存在反倒显得更独特了。

 

深圳的例外,当然有很多因素的考量。但事实很快证明,任何一个政策洼地,都很快会被流动性填满。

 

深圳成为了投资客的天堂,哪怕是疫情之后在北京上海楼市还一片低迷时,千万富豪、单身离异妇女炒房团,浩浩荡荡地杀进深圳楼市,把二手房均价抬升到7万元时代。

 

顶级豪宅的深圳湾一号的售楼处里,有一半是来自北京的客户。手握1000万的投资客们,在北京上海只能买一套房子,但在深圳可以撬动两到三套。

 

包叔在《深圳永不眠》里说过,房价猛涨的背后,是很多年轻人对这座城市的无声告别。

 

深圳的长沙化,确实是很多人都没有想到的。 “中国特色社会主义先行示范区”这几个字,很多人以为最重要的是“先行示范区”,但现在看来,不是这样的。

 

昨天,发改委公布了上半年的经济数据,很多数字都不意外。

 

比如,消费下滑超过预期,社会销售品零售总额同比减少了11.4%。在一片哀嚎中,只有一个数字是正值:



1-6月房地产开发投资同比增1.9%。



1-5月,这个数字还是-0.3%。简单点说,房地产只用了一个月,就把固定资产投资的信心给拉回来了。

 

房地产在经济中的支柱作用,越发明显了。这也是地产行业和政策博弈的最大基础。

 

因为从杭州等城市来看,“地产长沙化”最直接的后果,就是开发商失去对利润的掌控,彻底变成城市的打工者。

 

以前,深圳是开发商窥测政策走向的唯一一个窗口,就像黄晓阳的那本官场小说里说的,高层领导办公室的门总是紧闭的,次一级领导的门是虚掩着的,小领导的门一直是敞开着的。

 

只要门敞开,就可以探头张望,就有讨论的空间和机会。

 

现在呢。


转自:https://mp.weixin.qq.com/s/UU2-H4taqt9SXlmTGhlRRA

用一个脚本就把系统升级到https了,且永久免费!

来自:今日头条,作者:猿话

链接:https://www.toutiao.com/i6674393673007890957

现在很多站长都会考虑将自己的站点从http升级到https,不仅是基于安全的考虑,有的也是因为第三方平台的限制,如谷歌浏览器会将http站点标记为不安全的站点,微信平台要求接入的微信小程序必须使用https等。

那如何将一个http站点升级为https站点呢?

http与https的区别

为了数据传输的安全,https在http的基础上加入了ssl协议,ssl协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。要想将http升级为https,只需要给http站点增加一个CA证书即可。

目前获取CA证书有两种途径:

  • 购买收费的CA证书

  • 获取免费的证书

收费的CA证书各大服务提供商都有卖,如阿里云、腾讯云等。

完美,竟然用一个脚本就把系统升级到https了,且永久免费!

收费的证书不便宜,从阿里云官方网站看,它的价格可以从几千元到上万元不等。

完美,竟然用一个脚本就把系统升级到https了,且永久免费!

这对于小公司平台,甚至是个人站点来说,是一个不小的开支。

Letsencrypt是一个免费、自动化和开放的证书颁发机构,其颁发的证书一次有效期为三个月,但是只要能持续更新,基本可以永久使用。

今天推荐的这个脚本acme.sh,实现了 acme 协议, 可以帮你持续自动从Letsencrypt更新CA证书。

下载地址如下:

https://github.com/Neilpang/acme.sh

安装 acme.sh

安装acme.sh很简单,一个命令即可:

curl https://get.acme.sh | sh

普通用户和 root 用户都可以安装使用。安装过程进行了以下几步:

1、把acme.sh安装到你的home目录下:

~/.acme.sh/

并创建 一个 bash 的 alias,方便你使用:alias acme.sh=~/.acme.sh/acme.sh

2、自动为你创建 cronjob,每天 0:00 点自动检测所有的证书。如果快过期了,需要更新,则会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中: ~/.acme.sh/

生成证书

acme.sh 实现了 acme 协议支持的所有验证协议, 一般有两种方式验证:http 和 dns 验证。

1、http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证,然后就可以生成证书了。

acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/

acme.sh 会全自动的生成验证文件, 并放到网站的根目录,然后自动完成验证。最后会聪明的删除验证文件,整个过程没有任何副作用。

如果你用的是apache服务器,acme.sh 还可以智能的从 apache的配置中自动完成验证,你不需要指定网站根目录:

acme.sh --issue -d mydomain.com --apache

如果你用的是nginx服务器,或者反代,acme.sh还可以智能的从 nginx的配置中自动完成验证,你不需要指定网站根目录:

acme.sh --issue -d mydomain.com --nginx

注意:无论是 apache 还是 nginx 模式,acme.sh在完成验证之后,会恢复到之前的状态,都不会私自更改你本身的配置。好处是你不用担心配置被搞坏,但也有一个缺点,你需要自己配置 ssl 的配置,否则,只能成功生成证书,你的网站还是无法访问https。但是为了安全,你还是自己手动改配置吧。

如果你还没有运行任何 web 服务,80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口,完成验证:

acme.sh --issue -d mydomain.com --standalone

2、dns 方式,在域名上添加一条 txt 解析记录,验证域名所有权。

这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证。不过,坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

acme.sh --issue --dns -d mydomain.com

然后,acme.sh 会生成相应的解析记录显示出来,你只需要在你的域名管理面板中添加这条 txt 记录即可。

等待解析完成之后, 重新生成证书:

acme.sh --renew -d mydomain.com

注意:第二次这里用的是 –renew

dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证。

acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。

copy/安装 证书

前面证书生成以后,接下来需要把证书 copy 到真正需要用它的地方。

注意:默认生成的证书都放在安装目录下:~/.acme.sh/,请不要直接使用此目录下的文件。例如,不要直接让 nginx/apache 的配置文件使用这下面的文件。这里面的文件都是内部使用,而且目录结构可能会变化。

正确的使用方法是使用 –installcert 命令,并指定目标位置,然后证书文件会被copy到相应的位置,例如:

acme.sh --installcert -d <domain>.com 

--key-file /etc/nginx/ssl/<domain>.key 

--fullchain-file /etc/nginx/ssl/fullchain.cer 

--reloadcmd "service nginx force-reload"

一个小提醒,这里用的是 service nginx force-reload,不是 service nginx reload,据测试, reload并不会重新加载证书,所以用的 force-reload。

Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer,而非 /etc/nginx/ssl/<domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

–installcert命令可以携带很多参数,来指定目标文件。并且可以指定 reloadcmd, 当证书更新以后,reloadcmd会被自动调用,让服务器生效。

值得注意的是,这里指定的所有参数都会被自动记录下来,并在将来证书自动更新以后,被再次自动调用。

更新证书

目前证书在 60 天以后会自动更新,你无需任何操作。今后有可能会缩短这个时间,不过都是自动的,你不用关心。

更新 acme.sh

目前由于 acme 协议和 Letsencrypt CA 都在频繁的更新,因此 acme.sh 也经常更新以保持同步。

升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了。

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

出错怎么办:

如果出错, 请添加 debug log:

acme.sh --issue ..... --debug

或者:

acme.sh --issue ..... --debug 2

最后,本文并非完全的使用说明,还有很多高级的功能,更高级的用法请参看其他 wiki 页面。

https://github.com/Neilpang/acme.sh/wiki