微信小程序正式上线,服务端请求必须HTTPS彩世界
分类:彩世界彩票注册平台官网

泛域名ssl证书有什么好处?

HTTP明文协议是不安全的传输协议,无法进行服务器端真实身份校验,也不能为传输数据提供加密保护,通过HTTP协议传输的数据时刻处在被窃听、篡改、冒充的风险中。HTTPS传输协议在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密,确保数据传输到正确的服务器端,并防止中间人窃取传输数据。

简单地说,这个问题要么有第三方提供 https 支持,要么不用它。

基于这些原因,SSL证书的需求变得很大了,几乎网站上线,包括子网站等,都需要第一时间部署SSL证书。为了控制好SSL证书的使用成本,很多企业开始选择通配符泛域名版SSL证书。根据SSL证书供应商统计,SSL证书用户中申请通配符泛域名版SSL证书的比例已经超过50%了。

DV SSL证书

用于网站的证书需要被大众信任,所以不能自签发的证书,那就申请一个吧。

泛域名SSL证书又叫通配符证书,申请这样的证书可以保护一个域名及该域名下的所有二级、三级子域名。这样域名有证书加密传输的安全链接,也就形成了https加密链接形式,不但安全而且还不限制子域名的数量。

OV SSL证书

配置Tomcat server.xml 的 Engine 模块下配置一个 Value:<Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/>

什么是通配符泛域名SSL证书?

我很顺利地申请到了免费的StartSSL证书,分别用在两个子域上。

一般情况企业因为业务需求,会解析很多子域名,如果是这样对于有很多域名的企业来说,进行部署SSL证书也是一项非常浩大的工作。不仅在费用上投入很大,在时间精力上也是一笔不小投入。但是为了实现https又不得不进行SSL证书部署,这时用到泛域名SSL证书是非常合适的。

如果您的小程序涉及金融、网银、电商等安全信任级别较高的应用,推荐使用沃通EV SSL证书。

但是就像前面说的,一定要在服务器上保护好它,例如:chmod 400 ssl.key

申请泛域名ssl证书有什么好处?大家都知道现在做网站需要部署SSL证书,因为:谷歌火狐等主流浏览器开始提示没有SSL证书的网站“不安全”;百度谷歌等搜索引擎公开声明拥有SSL证书的网站具有更好的排名权重;苹果、微软等一些平台要求网站具有SSL证书;数据传输需要https加密传输;

企业级微信小程序在测试阶段可以选用沃通DV SSL证书,但是在正式上线后,最好换成企业级别的沃通OV或EV SSL证书。

注意:SSL所说的单个域名是一个完整的域名,一个子域名就算一个,而非一个顶级域名。如果网站有很多子域名,只需要申请真正需要的域名证书。

彩世界彩票注册平台官网 1

如果您的小程序涉及多个域名,推荐使用沃通OV SSL证书可支持一张证书绑定一个顶级域名下的无数个通配符子域名或绑定100个多域名,是性价比很高的选择。

个人或小站点可用一类或二类,企业一般用二类认证,少数企业会用到EV认证。

一般情况下添加所有的子域名需要配置证书时就不要走审核流程,加快配置子域名的速度,节省时间。同样由于不限制数量的原因,也就节省很大一笔额外的费用,如果客户的网站有很多的子域名,那么使用这样的SSL证书是十分合适的。

服务端配置SSL证书

  • hanguokai - 韩国恺的博客

泛域名ssl证书

#HTTPS server

#

#server {

# listen 443;

# server_name   localhost;

# ssl on;

#   ssl_certificate cert.pem;

#   ssl_certificate_key cert.key;

#   ssl_session_timeout 5m;

# ssl_protocols   SSLv2 SSLv3 TLSv1;

# ssl_ciphers ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;

#   ssl_prefer_server_ciphers on;

# location / {

# root html;

# index   index.html index.htm;

# }

#}

某些页面是同时支持 http 和 https ,还是只支持 https、强制 https?同时支持就是用户用什么协议访问都可以,那么用户的请求主要就是由页面本身的链接引导来的,因为一般用户不会自己特意去修改地址栏的。一般我们的网站可以做成同时支持http和https,都可以访问。但是这就容易有后面说的混合内容或混合脚本的问题。

由于泛域名SSL证书的特性,域名验证和企业验证这俩种类验证类型在泛域名SSL证书里经常使用。是泛域名里存在性比较高的验证证书。而增强验证型的泛域名证书在企业里就不经常使用了。因为它需要对每个使用ssl证书的域名进行独立验证,所以使用率很低。

微信小程序对HTTPS的要求

彩世界彩票注册平台官网 2SSL应用部署小结

每一种SSL证书都有验证等级,泛域名也不例外。泛域名证书有三种验证等级种类,分为域名型证书、企业型证书、增强型证书。

将其修改为 :

利用keytool 命令将你的证书导入进去。

从沃通申请到SSL证书后,会得到一个有密码的压缩包文件,以Ngnix为例,打开其中的for Nginx 文件可以看到 2 个文件,包括公钥、私钥。

另外,nginx需要依赖 openssl 提供ssl支持,这个也要有。

OV SSL证书被称为企业验证型SSL证书,是因为申请时不仅需要验证域名所有权,还需要提交企业真实身份的验证材料,无法通过真实身份验证的用户,无法获取到OV级别的SSL证书,因此其具备加密传输和身份验证的完整功能。

实际上SSL证书也可以做客户端认证,用户拥有自己特有的证书,用它可以证明自己的身份,当然也就用不着用户名和密码了。但这种用的很少,一般web服务器也不支持。

每个微信小程序必须事先设置一个通讯域名,并通过HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。也就是说,请求request地址必须是合法域名,需要有SSL证书认证过。

**Nginx 配置**小结一下 Nginx 配置SSL注意的问题,详细安装配置内容请参考其它资料,如官方 SSL模块 和 https配置文档。1. 首先检查一下是否已安装了 SSL模块,因为默认是不包含的。

微信小程序自9月份首次开启内测就开始在圈内刷屏了,不需要下载安装,“用完即走”的理念,使其被誉为“APP杀手”。微信庞大社交用户基础,可能带来的业务爆发性上,这一波微信红利,开发者怎可错过?

解决混合内容问题(****http和https)

EV SSL证书

如果程序中把这些当实际用户请求做处理就有问题了。解决方法很简单,只需要分别配置一下 Nginx 和 Tomcat 就好了,而不用改程序。

在产品性能标准化的SSL证书行业,优质服务成为开发者产品选型过程要考虑的重点。沃通CA不仅为开发者提供符合小程序要求的SSL证书,还将全程协助用户完成证书部署,免费协助用户安装证书、对证书部署的安全性进行例行检测、免费提供安全漏洞修补指南、耐心指导用户逐步完成优化配置,直至用户安全正确地部署好证书。

还可以规划为部分页面支持 https,一般公开页面不用https,只是将部分地方的链接改为 https 就可以了。专门期望以 https 访问的页面中,引用的绝对URL可以明确的使用 https链接。

但是微信对小程序也是有诸多的限制,例如文件大小、请求服务端必须是https等等。实现服务器端HTTPS请求,需要在服务器端配置SSL证书实现。说到SSL证书,很多开发者会觉得头大,因为SSL证书涉及多个种类,如何选择才能符合小程序的要求?如何配置SSL证书到服务器端?本篇要讲的就是在最短的时间内,让你的网站从http升级到https。如果你开发的微信小程序还没有启用https,那么这篇也许可以帮到你。

3. 合并证书配置文件和Apache配置不同,Nginx需要将服务器证书和ca证书链合并到一个文件中,作为 ssl_certificate 配置的内容。例如,按照证书链从下向上的顺序,我有三个证书:ssl.crt(自己域名的服务器证书)sub.class1.server.ca.pem(startssl 的一类证书)ca.pem(startssl 的根证书)

保存退出,并重启Nginx。通过https方式访问您的站点,确认站点证书安装配置正确即可,其实没有想象的那么难。如果你使用的是其他服务器,可以查看沃通CA最全服务器SSL证书部署指南。

看了看网上SSL证书的价格,便宜的一般都是10美元左右一个子域名/每年,按不同类别、不同品牌等价格在几十美元到几百美元一年。比如能显示绿色地址栏的EV证书和通配符证书贵一些。国内自己的或代理的,比国外贵不少,动辄几千元。其实就是由可信源认证了一下,类似于办证,用起来没什么差别,并非越贵越好。

SSL证书的作用

引用第三方文件的问题(如 CDN 分发的文件)

EV SSL证书被称为扩展验证型SSL证书,是因为申请EV SSL证书不仅需要验证域名所有权,按规定提交企业真实身份验证材料,还要求提供更加详细的企业信息(如具体营业地址等信息),并提供具有法律效力的证明文件(如律师函等)。经过EV级别验证的网站,身份真实可靠,浏览器也会对EV验证的网站进行特殊的品牌展示,比如浏览器地址栏显示绿色、直观展示网站所属单位名称等等,展现良好的品牌形象和公信力。

国外常见的SSL提供商有:Thawte,Go Daddy,VeriSign,RapidSSL,GeoTrust,StartSSL,Comodo。StartSSL、Go Daddy的比较便宜,GeoTrust、Comodo的价格适中,Thawte和VeriSign的价格较贵。

SSL证书的选择

如果Nginx作为前端代理的话,则Tomcat根本不需要自己处理 https,全是Nginx处理的。用户首先和Nginx建立连接,完成SSL握手,而后Nginx 作为代理以 http 协议将请求转给 tomcat 处理,Nginx再把 tomcat 的输出通过SSL 加密发回给用户,这中间是透明的,Tomcat只是在处理 http 请求而已。因此,这种情况下不需要配置 Tomcat 的SSL,只需要配置 Nginx 的SSL 和 Proxy。

目前市面上的主流SSL证书可分为三大类,DV SSL证书(域名验证型)、OV SSL证书(企业验证型)、EV SSL证书(扩展验证型)。

为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册、登录、控制台等。像Gmail、网银等全部采用https传输。https/ssl 主要起到两个作用:网站认证、内容加密传输和数据一致性。经CA签发的证书才起到认证可信的作用,所有有效证书均可以起到加密传输的作用。

打开Nginx安装目录下conf目录中的nginx.conf文件找到

VeriSign现在归属赛门铁克,在国内是由天威诚信代理的。世界真小,天威诚信就在我很多年以前的东家大楼里,地下一层是他们的机房,我还进去过一次。

server {

listen 443;

server_name   localhost;

ssl on;

ssl_certificate sslkey/public.cer;   (证书公钥)

ssl_certificate_key   sslkey/private.key; (证书私钥)

ssl_session_timeout   5m;

ssl_protocols   TLSv1 TLSv1.1TLSv1.2;

ssl_ciphers   ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;

ssl_prefer_server_ciphers   on;

location / {

root html;

index index.html   index.htm;

}

}

因为CDN的云文件提供者,一般为每个cdn用户创建一个单独的子域名来使用,这样的话,CDN提供者要想支持 https 就必须支持所有可能的子域名,因此要求CDN提供方使用那种通配符子域名的证书。

1月9日凌晨微信小程序正式上线,首批上线的小程序有三百多家,用户需要将微信更新至iOS6.5.3版本或Android6.5.3版本进行体验。

4. 避免启动时输入密码配好之后,启动nginx 要你输入密钥的密码。这是因为 ssl_certificate_key 配置对应的文件(也就是 startssl 给你的私钥文件)内容是加密的,需要输入你创建这个时设置的密码才能解密。这样私钥虽然很安全,但是每次重启服务都要输入一次密码也太麻烦了。其实,只要证书改为解密了的内容,就可以避免每次输入密码。用如下命令即可:openssl rsa -in ssl.key -out newssl.key 输入密码,就生成了解密后的私钥内容,使用这个就OK了。

DV SSL证书之所以被称为域名验证型SSL证书,是因为在申请时CA机构只审核域名的所有权,不验证域名所有者的真实身份。我们使用SSL证书,不仅仅用于传输加密,还因为它代表着网站身份是真实的、经过验证的,而DV SSL证书只能实现传输加密,无法验证网站所有者身份,是不完整的SSL证书产品,通常只适用于产品测试、个人网站、个人博客等方面。

5. 优化SSL配置SSL 很消耗 CPU 资源,尤其是在建立连接的握手阶段。一是通过开启 keepalive 可以重用连接。二是可以重用和共享ssl session,见上面ssl_session相关配置。

目前全球互联网正在从HTTP向HTTPS的大迁移,Chrome和火狐浏览器将对不采用HTTPS加密的网站提示不安全,苹果要求所有APP通信都必须采用HTTPS加密,小程序强制要求服务器端使用HTTPS请求,正是顺应了互联网安全的趋势。

相对 URL、绝对 URL 与 只缺协议的URL(****Protocol Relative URL****)相对路径比较简单,自动匹配用户请求的 http 或 https 协议。

但是绝对 url 则不成,因为绝对 url 已经明确地写上了协议: 。这个问题还有一个办法解决,你一定没见过这种形式:** //www.example.com/jquery.js**哈哈,一个缺少协议的URL(实际上还算是相对URL),这种形式可以在浏览器中被正确补充上合适的协议!很多人都用这种方法。但是,这里有点小问题,IE7 和 IE8 处理这种缺少协议的URL的css 文件时,同一个css文件会下载两次,详见Steve的文章 。

彩世界彩票注册平台官网 3SSL应用部署小结

混合内容是指:在https的页面中混合了非https的资源请求,比如图片、css、js 等等。如果是混合了非 https 的 js 代码,则被称为混合脚本。混合内容的危害:如果只是混合了不安全的图片和css,那么受中间人攻击篡改,一般只会影响页面的显示,危害相对小一点。如果是混合了不安全的 js 代码,则这个不安全的 js 可以完全访问和修改页面中的任何内容,这是非常危险的。

应用规划、配置和调整

SSL比 http 要消耗更多cpu资源(主要是在建立连接的阶段,之后还要对内容加密),所以对一般网站,只需要对部分地方采用https,大部分开放内容是没必要的,具体取决于你的业务要求。比如对于很多安全要求较低的网站,完全不用https也是可接受的。

4. 免费的StartSSL

2. 证书价格

理论上,混合了第三方的内容,即使是SSL的第三方内容也不是很好。因为用户信任的是你,而不是第三方,即使第三方也支持https,但你能保证第三方就绝对安全吗。不引用任何第三方才是绝对安全的,但这样太严格了,安全其实也是一个 tradeoff 的问题,需要考虑很多方面的平衡。还好,起码现在浏览器认为已经是安全的了。

另请参看,Chrome对混合脚本危害的说明与提示:Trying to end mixed scripting vulnerabilities

所以,只有页面本身和所有引用的资源都是 https 的浏览器才认为是安全的,只要其中引用了非安全资源,浏览器都会给出不安全的提示,特别是有 js 的情况。如果浏览器提示不安全,那样我们就达不到原来目的了。我们费了半天功夫去申请 SSL 证书,配置Web服务器,最后如果因为混合内容而前功尽弃就太糟了。咱继续努力吧,想办法让所有引用资源都是安全的。

内容加密传输更安全,如果只是为了加密,使用自签发的证书也可以,但浏览器无法验证证书,所以会给出一个非常吓人的警告,所以自签发证书不适合给外人使用,只适合内部使用,把这个证书 加入到自己的信任列表或忽略证书验证即可,以后就不会继续拦截了。

  • hanguokai - 韩国恺的博客上图是IE和Chrome上对https的不同表现。Chrome 网站安全性指示器说明:

JS 自动判断当前协议现在我们经常用 js 来加载其它 js 文件或 其它别的文件,如果是请求是相对URL则没问题,如果是绝对URL怎么办?其实 js 脚本可以这样:document.location.protocol 等于 'http:' 还是 'https:' 来判断。例如在 Google Analytics 的嵌入代码中:ga.src = ('https:' == document.location.protocol ? '' : '') '.google-analytics.com/ga.js';

申请证书

1.证书类别

上面第2-4项是关键。这些配置放在 server 块就可以对其中的所有 location 生效了,并且同时支持 http 和 https 。或者把 http 和 https 分开配置也很常见。

同源策略的问题最后提醒一点:http 和 https是不同源的!即使后面的内容都一样。所以 ajax 发请求的时候要使用正确协议的绝对URL才行。相对URL的 ajax 请求没关系。

Java的keystorekeystore 是 Java 中专用并内置的一个类似于 openssl 的工具,一个 keystore 文件就是一个“保险箱”,专门存放证书和密钥,和相关的管理功能:生成自签发的证书、密钥、导入导出等。可以通过 keytool 命令或 Java api 交互。

Tomcat中Connectortomcat中有三种 Connector 实现:block、nio 和 APR。前两者使用Java SSL(这需要 keystore 的配置 ),APR使用OpenSSL(不需要用keystore,直接指定证书),配置略有不同。

并不是说有了SSL证书就没事了,还要考虑应用中的使用问题,需要规划、服务器配置、应用调整等多个环节。

把它们的内容按顺序连接到的一个文件中,每个内容另起一行,中间没有空行或空格。

2. nginx.conf 中的典型配置示例listen 80;listen 443 ssl;ssl_certificate cert.pem; #修改具体文件ssl_certificate_key ssl.key; #修改具体文件

按验证的类别分:域名认证(Domain Validation):认证你的域名所有权和网站,申请验证简单,几分钟即可。组织机构认证(Organization Validation):认证的域名和公司信息,需要提交公司资料认证。扩展认证(Extended Validation,简称EV):这种证书会在浏览器中出现“很明显”的绿色地址栏,给用户的可信度最高。有安全评估保证。

SSL最主要应用是在浏览器和Web服务器之间,尽管不限于此。当然,安全本身是重要的内在属性。但在表面上看,部署SSL 就是为了让用户浏览器里看起来更安全一些,以增加用户的信任感。所以很多企业更把它当作门面,而签发机构也为此卖高价,尤其是国内的价格明显高于国外的。

注意,如果 tomcat 部署在其它web服务器代理的后面,需要正确配置好才能返回正确结果,见本文最后一部分。

是否强制 https ?对于安全性高的网站或网站中的部分页面,可以强制使用https访问, 即使用户在地址栏里手工把 https 改为 http, 也会被自动重定向回 https 上。比如可以通过配置web服务器 rewrite 规则将这些 http url 自动重定向到对应的 https url 上,而不用改应用。

浏览器与SSL证书

一般我们会引用由 CDN 分发的文件,比如某个 js 库文件,而不用访问自己网站上的,这样借助 CDN 网络可以加快速度,这当然很好。但是,如果我们在页面中使用绝对 URL 直接引用这个文件就无法自动使用 https 了!出现了混合协议内容,浏览器又该“变脸”了。

**Nginx Tomcat SSL**实际上,大规模的网站都有很多台Web服务器和应用服务器组成,用户的请求可能是经由 Varnish、HAProxy、Nginx之后才到应用服务器,中间有好几层。而中小规模的典型部署常见的是 Nginx Tomcat 这种两层配置,而Tomcat 会多于一台,Nginx 作为静态文件处理和负载均衡。

证书需要被少数一级或二级 CA 认证才有效。计算机安全中的信任就是一个信任链的关系,信任链最顶端的被称为根证书。自签发的证书在技术上是完全一样的,仅用于加密传输是没问题的。但是不能被外人信任,所以一般仅用于内部使用。除了自签发不被信任,如果证书过期、已被吊销或者非证书所代表的域名也都是不被信任的,导致证书验证出错。

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 $scheme;

唯一免费的是StartSSL,其它的一般只提供30免费试用。

如果 Tomcat 作为独立的Web服务器,那么就需要配置Tomcat就可以了,文档参考这里 和 这个。主要是配置存放证书的 Keystore 和 连接器Connector。

在代理模式下,Tomcat 如何识别用户的直接请求(URL、IP、https还是http )?在透明代理下,如果不做任何配置Tomcat 认为所有的请求都是 Nginx 发出来的,这样会导致如下的错误结果:request.getScheme() //总是 http,而不是实际的http或httpsrequest.isSecure() //总是falserequest.getRemoteAddr() //总是 nginx 请求的 IP,而不是用户的IPrequest.getRequestURL() //总是 nginx 请求的URL 而不是用户实际请求的 URLresponse.sendRedirect //总是重定向到 http 上 (因为认为当前是 http 请求)

配置 Nginx 的转发选项:

按证书包含域名数量分为:单域名:只针对这个域名有效,不能用在其它域名下。多域名:只针对列出的多个域名有效。通配符域名:对任意子域名有小,显示的是 *.example.com。

配置双方的 X-Forwarded-Proto 就是为了正确地识别实际用户发出的协议是 http 还是 https。X-Forwarded-For 是为了获得实际用户的 IP。这样以上5项测试就都变为正确的结果了,就像用户在直接访问 Tomcat 一样。

ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;

应用程序中如何判断访问协议对于动态页面,如 jsp、php等,也是可以动态判断当前是否使用了 https 协议的。所以应用可以根据动态判断,来生成不同的引用 URL。这样虽然有点麻烦,但也算是解决了自动识别协议的问题,当然相对路径总是不需要处理的。比如在 jsp 中:request.isSecure() 为true 表示当前为 https ,false表示 http 访问request.getScheme() 返回字符串 https 或 http

最后,证书签发给你后,最主要是保护好私钥证书,这个丢失或泄漏就完了。因为如果被别人利用也就毫无安全性了,需要向证书签发机构申请撤销证书并申请新的证书,这当然也是要收费的。

WWDC 16 中,Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的访问限制。从 2017 年 1 月 1 日起,所有的新提交 app 默认是不允许使用 NSAllowsArbitraryLoads来绕过 ATS 限制的,也就是说,我们最好保证 app 的所有网络请求都是 HTTPS 加密的,否则可能会在应用审核时遇到麻烦。

但 StartSSL 提供的免费证书是一类的、仅对域名和email进行验证,不对组织做验证(也就是面向自然人的,非面向组织机构的),不过仅作为域名验证和数据加密也够了,并且浏览器也认它,一般人也不会去看你的证书级别。适合个人和初创网站使用,以后有钱了再申请个收费的替换即可。

所以我找到了下面的资料:SSL证书与Https应用部署小结

**独立Tomcat SSL**Tomcat 是很常见的 Java应用服务器,当然也可以作为独立的 Web服务器,所有用户请求直接访问 tomcat。

3. 签发机构

用 nginx -V 命令检查一下。如果没有ssl模块则需要重新安装(建议升级到最新版本),注意安装时加上ssl 选项:./configure --with-http_ssl_module

原文来自:

ssl_protocols SSLv2 SSLv3 TLSv1;ssl_ciphers ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;ssl_prefer_server_ciphers on;

当SSL 遇上CDN 或 其它第三方文件就有点麻烦,因为很多CDN还不支持SSL。如果支持 https 的话就可以直接用 https 的绝对URL了,即使是同时支持http 和 https 的页面,这样做也不算太浪费,起码解决了问题。

本文由彩世界注册首页发布于彩世界彩票注册平台官网,转载请注明出处:微信小程序正式上线,服务端请求必须HTTPS彩世界

上一篇:七个大招!教你飞快升高门店复购率【彩世界彩 下一篇:没有了
猜你喜欢
热门排行
精彩图文