腾讯云CND的一次异常记录

0x00

现在的项目一直在做微信公众号的业务,因为经常有推文,会有短时大流量的访问,就使用的腾讯云的CDN加速来减少源站的压力。在昨天下午的时候发现很多请求出现504点情况。因为我们前端采用腾讯云的LB去做集群,根据URL去转发到后端服务器去处理。第一时间检查了了结群的服务器,没发现有异常的服务器。再排查了一遍LB的设置,检查了后端服务中间件的超时时间设置。初步判断为腾讯云的CDN出了问题。

0x01

拿浏览器测试了一下,刷新页面资源随机返回504,同一资源会50%左右的概率返回504。因为我们配置的http跟https,发现http的都是正常返回200的,就是https的不正常。再拿Fiddler来模拟请求,还是50%的概率返回504。郁闷了半天,都没发现问题就是莫名的返回504,最后之间修改电脑的Hosts文件,把域名直接指向腾讯云LB后,都正常的了,于是提交了工单。

0x02

大概过了半个小时腾讯云工程师回复测试其中一个节点暂时没出现504。需要测试下我这边的异常节点。可以通过ping去获取CDN节点。

测试后回复工单

腾讯云工单回复CDN对于504返回码是直接透传的(为源站返回),同时这边进行绑源测试,直接访问源站也是有出现504的情况,请您核实源站情况。

我们修改本机hosts文件直接指向我们的回源ip,就不会出现504的情况。

您好,您可以这样,下载一个mtr工具,然后输入您的域名(接入cdn的)然后抓个400个包左右,然后截图,重复以上的步骤,域名绑定您源站host然后抓400个包左右看是否有丢包。

然后我下载了WinMTR分别测试的,启用CDN情况:

直接回源:

核实您源站是LB而LB后端机器是个机器比较多的集群,您看下LB监控有出现异常状态的机器吗?

LB后端的机器是正常的,目前是深圳的用户反馈出现504异常。我用南京联通的网络测试没有出现504.

深圳用户访问的节点我这里刚刚也测试了下,通过节点访问也是没问题的,504这种错误码CDN已经规避了所有出现这种问题的可能,只会透传源站返回的状态,我这里看了下回源日志确实有几百次504,但都是源站返回的。因为您源站是个lb这里不太好判断具体那台机器给返回的。

解析记录添加CDN时候的接口测试:

目前我们已经修改了解析记录为A记录,直接解析到LB上,测试结果:

按照目前的情况来看,我们只能停用CDN了…

0x03

您添加CDN的时候是在深圳测试测试的吗?其他地区有反馈吗?

我们的CDN很早就已经添加了,只是昨天下午开始深圳地区反馈很多请求出现504,其他地区还没有反馈异常。

您这个是用什么测试的?有更像的信息吗?确实很奇怪,我们这面504是透传源站的,但是您直接访问源站又没问题。肯定那块有问题,还需要详细查下。

这个是我用Fiddler直接请求接口地址的,解析了CDN就会出现504的情况,我们的网站是支持http跟htts的目前就是htts的出现504的情况,http都是正常的。这个借口地址,我跟了一下整过请求的过程,请求到LB后,LB做了URL转发 /front/ 只交给后端的一台去处理的。后端的的服务器的日志我排查了一遍,没发现504的情况。目前请求返还的504页面是LB返回的页面。然之间请求LB却不会出现504情况。

0x04

目前还在等腾讯云工程师定位问题。后续定位到问题再更新~

巴黎圣母院大火

0x00

巴黎圣母院,耸立在塞纳河的西堤岛上,拥有850多年历史,始建于1163年,并在1345年完工。2013年,圣母院庆祝兴建850周年。圣母院建筑总高度约超过130米,是欧洲历史上第一座完全哥德式的教堂,具有划时代的意义,也是巴黎历史悠久最具代表性的古迹,被联合国教科文组织列入世界遗产名录

今天早上起来打开微博时发现都是在说法国巴黎圣母院当地时间2019年4月15日下午6点50分左右被大火烧了,整座建筑损毁严重。着火位置位于圣母院顶部塔楼,大火迅速将圣母院塔楼的尖顶吞噬,很快,尖顶如被拦腰折断一般倒下。

0x01

巴黎当地时间2019年4月15日下午6:50。正搭起脚手架进行维修工程的巴黎圣母院遭遇大火,滚滚浓烟遮蔽了塞纳河畔的天空。 火势蔓延速度很快,难以控制。在紧张围观的人群注视下,巴黎圣母院标志性的尖顶被烧断,坍塌倒下。

事故时间点
2019-04-15 18:50,根据法国消防部门消息,巴黎圣母院大教堂屋顶上冒出火焰和烟雾。
2019-04-15 19:07,一名路透社记者从远处看到巴黎圣母院的烟雾和火焰。
2019-04-15 19:49,火势蔓延到巴黎圣母院大教堂的尖顶上。法国总统马克龙因此推迟了原定当天晚上8点发表的关于“大辩论”的总结讲话。
2019-04-15 19:53,巴黎圣母院中部的尖塔坍塌。
2019-04-15 19:59,法国总统办公室称马克龙正赶往现场。
2019-04-15 20:07,路透社现场记者报道称,巴黎圣母院的整个屋顶倒塌了。
2019-04-15 20:25,巴黎圣母院附近区域被警方疏散。
2019-04-15 21:00,大火仍然没有被扑灭,夜幕下的巴黎圣母院主体建筑不断冒出白色烟雾,空气中弥漫着刺鼻的气味。
2019-04-15 22:20,法国内政部的一名官员表示,有400名消防员已在火灾现场,但他们可能无法拯救巴黎圣母院。
2019-04-15 22:30,巴黎民众及游客等聚集在巴黎圣母院附近,为圣母院祈祷。
2019-04-15 22:50,巴黎市长表示,为了防止火势蔓延,居住在巴黎圣母院附近的人们已经被疏散。
2019-04-15 23:05:一名法国消防官员表示,巴黎圣母院的标志性长方形塔楼已从火灾的风险中被拯救出来。
2019-04-15 23:15,巴黎检方称,目前调查人员正在对巴黎圣母院着火区域进行灭火。
2019-04-15 23:35,法国总统马克龙表示正在寻求国际帮助,以恢复重建巴黎圣母院。
2019-04-15 23:35,大火仍在继续燃烧。
2019-04-16 03:30, 公布了巴黎圣母院大火救援的最新进展,称火情已“全部得到有效控制,并已部分扑灭”。
2019-04-16 10:00,巴黎圣母院大火被全部扑灭。屋顶和塔尖被烧毁,但主体建筑得以保存,圣母院中的主要文物“耶稣荆棘冠”和“圣路易祭服”等也没有受损。火灾目前进入调查和损失评估阶段。

0x02 造成损失

根据法国消防队员称,巴黎圣母院主体结构被“拯救”,主结构整体保存完整。
巴黎副市长称,巴黎圣母院有着852年历史的中轴塔在火中坍塌。
据报道,巴黎圣母院馆藏珍宝在此次火灾中大致幸免,主结构尚存,但屋顶烧毁,一座尖塔倒塌,可能要数年时间修复。
重要文物“荆棘皇冠”和路易九世的一件长袍已被成功救出。

0x03 事故伤亡

没有人员死亡,有两名警察和一名消防员受到轻伤。

0x04 事故原因

        火灾发生后,巴黎市检察机关在第一时间宣布启动调查,调查方向初步定为“过失引发火灾导致损毁”,目前检方已经排除了纵火的可能性,也不认为此事和恐怖主义有关。
        法国媒体援引巴黎消防队的说法称,火灾与耗资600万欧元的翻新工程有“潜在联系”。据悉,翻新工程的对象是大教堂被烧毁的尖顶和建筑的250吨铅材料。上周,尖塔上的雕像才被起重机吊起

自己执生

时光匆匆,去年一年都没写过一篇博客。都忙碌于三点一线,上班、吃饭、睡觉。回想其实去年,仿佛白纸一般,没想可想。

常常在抱怨的时候会飙粤语,这些年总是自己执生。仿佛在迷宫中,两条路可选,选对即可乘风破浪;选错自己收拾残局。并没有人指点你的江湖路。

一切得靠自己执生。

一次B门曝光

最近公司组织去郴州旅游,一吃宵夜的晚上,路过一条桥,发现夜景很是入眼.索性排了几张.

B门曝光主要是自己控制曝光对时长,适合拍车流轨迹、星轨图之类的夜景。关键是手不能抖,建议用三脚架。

201705的厦门-老友记

跟几个老友好久没聚一起了,之前只是提议了一下今年去厦门玩,结果大家都来了。

胖子还是在发福,老涛都性格还是没变,老范发福了还带女朋友来。

一起住在曾厝垵,刚到的那天晚上就从街头吃到了结尾。一开始觉得曾厝垵有很多吃的,慢慢的才发现其实吃的大同小异,品种不是多。遗憾的是在鼓浪屿上面没有请导游,很多地方么有去看,就匆匆回来了。

这次一共玩了两天半,第三天就早上多想老涛跑去中山路买了虾粥、沙茶面,总算吃到一个正宗的厦门美食。

安装https的证书到java环境中

最近项目组有调用https的接口,所以在网上找了一圈关于linux下https证书的相关的文章。找到如下的步骤,自己真的使用,总结一下,方便以后查阅.

  1. 有些https需要安装证书,才可以调用,有些不安装也能调用。下面说必须安装证书时,怎么办。
  2. 执行java InstallCert 域名:端口,输入1,按下回车,在当前目录生成jssecacerts文件,他是keystore。该keystore的密码是空。
  3. 把jssecacerts放到$JAVA_HOME/jre/lib/security目录下,或者通过以下方式:
    System.setProperty(“javax.net.ssl.trustStore”, “你的jssecacerts证书路径”);

接下来对证书的操作
keytool -list -keystore jssecacerts 查看密钥库里面的证, 不出意外的话会有很多证书指纹
keytool -list -keystore jssecacerts | grep /i ***alias(名称)*** 查找我们自己的
keytool -export -alias ***alias(名称)*** -file Server.crt -keystore jssecacerts 会在当前目录生成Server.crt
导入到java的认证文件夹下keytool -import -file Server.cer -keystore “%JAVA_HOME%\jre\lib\security\cacerts” -alias server
使用如下命令可以看到结果:
keytool -list -keystore “%JAVA_HOME%\jre\lib\security\cacerts” | grep Server

到这里签名证书制作完成了就可以使用restful请求https服务了,

注意:因为是静态加载,所以要重新启动你的Web Server,证书才能生效。

=================================================

详细步骤:
把如下内容保存为InstallCert.java,执行javac InstallCert.java进行编译.

/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

import java.io.*;
import java.net.URL;

import java.security.*;
import java.security.cert.*;

import javax.net.ssl.*;

public class InstallCert {

    public static void main(String[] args) throws Exception {
	String host;
	int port;
	char[] passphrase;
	if ((args.length == 1) || (args.length == 2)) {
	    String[] c = args[0].split(":");
	    host = c[0];
	    port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
	    String p = (args.length == 1) ? "changeit" : args[1];
	    passphrase = p.toCharArray();
	} else {
	    System.out.println("Usage: java InstallCert [:port] [passphrase]");
	    return;
	}

	File file = new File("jssecacerts");
	if (file.isFile() == false) {
	    char SEP = File.separatorChar;
	    File dir = new File(System.getProperty("java.home") + SEP
		    + "lib" + SEP + "security");
	    file = new File(dir, "jssecacerts");
	    if (file.isFile() == false) {
		file = new File(dir, "cacerts");
	    }
	}
	System.out.println("Loading KeyStore " + file + "...");
	InputStream in = new FileInputStream(file);
	KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
	ks.load(in, passphrase);
	in.close();

	SSLContext context = SSLContext.getInstance("TLS");
	TrustManagerFactory tmf =
	    TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
	tmf.init(ks);
	X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
	SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
	context.init(null, new TrustManager[] {tm}, null);
	SSLSocketFactory factory = context.getSocketFactory();

	System.out.println("Opening connection to " + host + ":" + port + "...");
	SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
	socket.setSoTimeout(10000);
	try {
	    System.out.println("Starting SSL handshake...");
	    socket.startHandshake();
	    socket.close();
	    System.out.println();
	    System.out.println("No errors, certificate is already trusted");
	} catch (SSLException e) {
	    System.out.println();
	    e.printStackTrace(System.out);
	}

	X509Certificate[] chain = tm.chain;
	if (chain == null) {
	    System.out.println("Could not obtain server certificate chain");
	    return;
	}

	BufferedReader reader =
		new BufferedReader(new InputStreamReader(System.in));

	System.out.println();
	System.out.println("Server sent " + chain.length + " certificate(s):");
	System.out.println();
	MessageDigest sha1 = MessageDigest.getInstance("SHA1");
	MessageDigest md5 = MessageDigest.getInstance("MD5");
	for (int i = 0; i < chain.length; i++) { X509Certificate cert = chain[i]; System.out.println (" " + (i + 1) + " Subject " + cert.getSubjectDN()); System.out.println(" Issuer " + cert.getIssuerDN()); sha1.update(cert.getEncoded()); System.out.println(" sha1 " + toHexString(sha1.digest())); md5.update(cert.getEncoded()); System.out.println(" md5 " + toHexString(md5.digest())); System.out.println(); } System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]"); String line = reader.readLine().trim(); int k; try { k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1; } catch (NumberFormatException e) { System.out.println("KeyStore not changed"); return; } X509Certificate cert = chain[k]; String alias = host + "-" + (k + 1); ks.setCertificateEntry(alias, cert); OutputStream out = new FileOutputStream("jssecacerts"); ks.store(out, passphrase); out.close(); System.out.println(); System.out.println(cert); System.out.println(); System.out.println ("Added certificate to keystore 'jssecacerts' using alias '" + alias + "'"); } private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray(); private static String toHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(bytes.length * 3); for (int b : bytes) { b &= 0xff; sb.append(HEXDIGITS[b >> 4]);
	    sb.append(HEXDIGITS[b & 15]);
	    sb.append(' ');
	}
	return sb.toString();
    }

    private static class SavingTrustManager implements X509TrustManager {

	private final X509TrustManager tm;
	private X509Certificate[] chain;

	SavingTrustManager(X509TrustManager tm) {
	    this.tm = tm;
	}

	public X509Certificate[] getAcceptedIssuers() {
	    throw new UnsupportedOperationException();
	}

	public void checkClientTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    throw new UnsupportedOperationException();
	}

	public void checkServerTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    this.chain = chain;
	    tm.checkServerTrusted(chain, authType);
	}
    }

}

执行:java InstallCert hostname,比如:

java InstallCert www.baidu.com

会看到如下信息:

Loading KeyStore jssecacerts...
Opening connection to www.baidu.com:443...
Starting SSL handshake...

javax.net.ssl.SSLException: java.lang.UnsupportedOperationException
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1862)
        at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1845)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1366)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
        at InstallCert.main(InstallCert.java:87)
Caused by: java.lang.UnsupportedOperationException
        at InstallCert$SavingTrustManager.getAcceptedIssuers(InstallCert.java:171)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkAlgorithmConstraints(SSLContextImpl.java:998)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkAdditionalTrust(SSLContextImpl.java:944)
        at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:886)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
        ... 2 more

Server sent 3 certificate(s):

 1 Subject CN=baidu.com, OU=service operation department., O="BeiJing Baidu Netcom Science Technology Co., Ltd", L=beijing, ST=beijing, C=CN
   Issuer  CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
   sha1    b5 02 43 62 75 c8 87 4f 10 23 db 92 e3 04 72 dd 59 71 59 e0 
   md5     b2 ac 71 df 1f d6 1d d9 a2 83 8d 86 ef 86 58 e4 

 2 Subject CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
   Issuer  CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
   sha1    ff 67 36 7c 5c d4 de 4a e1 8b cc e1 d7 0f da bd 7c 86 61 35 
   md5     23 d5 85 8e bc 89 86 10 7c b7 ac 1e 17 f7 26 c5 

 3 Subject CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", C=US
   Issuer  OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
   sha1    32 f3 08 82 62 2b 87 cf 88 56 c6 3d b8 73 df 08 53 b4 dd 27 
   md5     f9 1f fe e6 a3 6b 99 88 41 d4 67 dd e5 f8 97 7a 

Enter certificate to add to trusted keystore or 'q' to quit: [1]

输入1,回车,然后会在当前的目录下产生一个名为“ssecacerts”的证书。

将证书拷贝到$JAVA_HOME/jre/lib/security目录下,或者通过以下方式:
System.setProperty(“javax.net.ssl.trustStore”, “你的jssecacerts证书路径”);

执行如下命令生产证书文件

keytool -export -alias ***alias(名称)*** -file Server.crt -keystore jssecacerts

会在当前目录生成Server.crt,接着把证书添加的信任目录

keytool -import -file Server.crt -keystore “%JAVA_HOME%\jre\lib\security\cacerts” -alias server

会要求输入你的密码,直接输入123456两次后,在输入yes,提示安装成功

Enter keystore password:
 Re-enter new password:
 Owner: CN=baidu.com, OU=service operation department., O="BeiJing Baidu Netcom Science Technology Co., Ltd", L=beijing, ST=beijing, C=CN
 Issuer: CN=Symantec Class 3 Secure Server CA - G4, OU=Symantec Trust Network, O=Symantec Corporation, C=US
 Serial number: 1a00c5992a0a1426f751433bd5cbf
 Valid from: Mon Aug 15 08:00:00 CST 2016 until: Thu Aug 17 07:59:59 CST 2017
 Certificate fingerprints:
 MD5:  B2:AC:71:DF:1F:D6:1D:D9:A2:83:8D:86:EF:86:58:E4
 SHA1: B5:02:43:62:75:C8:87:4F:10:23:DB:92:E3:04:72:DD:59:71:59:E0
 SHA256: 55:60:63:D5:7A:25:A5:60:02:1B:22:DE:23:B6:7A:59:0F:D3:98:C0:B7:7D:DC:33:1E:79:D7:7F:4B:22:07:12
 Signature algorithm name: SHA256withRSA
 Version: 3

Extensions:

#1: ObjectId: 1.3.6.1.4.1.11129.2.4.2 Criticality=false
 0000: 04 81 F3 00 F1 00 77 00   DD EB 1D 2B 7A 0D 4F A6  ......w....+z.O.
 0010: 20 8B 81 AD 81 68 70 7E   2E 8E 9D 01 D5 5C 88 8D   ....hp......\..
 0020: 3D 11 C4 CD B6 EC BE CC   00 00 01 56 90 7E 47 3A  =..........V..G:
 0030: 00 00 04 03 00 48 30 46   02 21 00 93 2D 3C E8 DC  .....H0F.!..-<..
 0040: 36 2B D6 FD EA 83 0D F4   07 FD FB 1B 38 12 4F E8  6+..........8.O.
 0050: 97 A9 9B 56 8F 51 63 56   B6 B0 CD 02 21 00 CC 54  ...V.QcV....!..T
 0060: 7A BB A8 E9 B2 CB 9A 5A   AC 13 88 56 61 C0 CE BB  z......Z...Va...
 0070: C8 62 BC 92 B8 4D E7 D3   D4 D0 E1 6F 4E C3 00 76  .b...M.....oN..v
 0080: 00 A4 B9 09 90 B4 18 58   14 87 BB 13 A2 CC 67 70  .......X......gp
 0090: 0A 3C 35 98 04 F9 1B DF   B8 E3 77 CD 0E C8 0D DC  .<5.......w.....
 00A0: 10 00 00 01 56 90 7E 47   5A 00 00 04 03 00 47 30  ....V..GZ.....G0
 00B0: 45 02 20 1F 44 21 BD 58   62 8B 42 12 DC 3E 0E 43  E. .D!.Xb.B..>.C
 00C0: BF EF 0C A9 4B 25 1D E7   39 6B 03 3C 6A 14 C1 E1  ....K%..9k.<j...
 00D0: 8D 1D 77 02 21 00 8C EE   CB 42 41 52 C4 E6 93 E1  ..w.!....BAR....
 00E0: 20 E4 0A E8 6C FA A0 5D   81 5C D6 59 57 45 C7 98   ...l..].\.YWE..
 00F0: E2 E4 D9 88 04 99                                  ......
 #2: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
 AuthorityInfoAccess [
 [
 accessMethod: ocsp
 accessLocation: URIName: http://ss.symcd.com
 ,
 accessMethod: caIssuers
 accessLocation: URIName: http://ss.symcb.com/ss.crt
 ]
 ]

#3: ObjectId: 2.5.29.35 Criticality=false
 AuthorityKeyIdentifier [
 KeyIdentifier [
 0000: 5F 60 CF 61 90 55 DF 84   43 14 8A 60 2A B2 F5 7A  _`.a.U..C..`*..z
 0010: F4 43 18 EF                                        .C..
 ]
 ]

#4: ObjectId: 2.5.29.19 Criticality=false
 BasicConstraints:[
 CA:false
 PathLen: undefined
 ]

#5: ObjectId: 2.5.29.31 Criticality=false
 CRLDistributionPoints [
 [DistributionPoint:
 [URIName: http://ss.symcb.com/ss.crl]
 ]]

#6: ObjectId: 2.5.29.32 Criticality=false
 CertificatePolicies [
 [CertificatePolicyId: [2.23.140.1.2.2]
 [PolicyQualifierInfo: [
 qualifierID: 1.3.6.1.5.5.7.2.1
 qualifier: 0000: 16 17 68 74 74 70 73 3A   2F 2F 64 2E 73 79 6D 63  ..https://d.symc
 0010: 62 2E 63 6F 6D 2F 63 70   73                       b.com/cps

], PolicyQualifierInfo: [
 qualifierID: 1.3.6.1.5.5.7.2.2
 qualifier: 0000: 30 19 0C 17 68 74 74 70   73 3A 2F 2F 64 2E 73 79  0...https://d.sy
 0010: 6D 63 62 2E 63 6F 6D 2F   72 70 61                 mcb.com/rpa

]]  ]
 ]

#7: ObjectId: 2.5.29.37 Criticality=false
 ExtendedKeyUsages [
 serverAuth
 clientAuth
 ]

#8: ObjectId: 2.5.29.15 Criticality=true
 KeyUsage [
 DigitalSignature
 Key_Encipherment
 ]

#9: ObjectId: 2.5.29.17 Criticality=false
 SubjectAlternativeName [
 DNSName: *.baidu.com
 DNSName: *.baifubao.com
 DNSName: *.bdstatic.com
 DNSName: *.hao123.com
 DNSName: *.nuomi.com
 DNSName: *.bce.baidu.com
 DNSName: *.eyun.baidu.com
 DNSName: *.map.baidu.com
 DNSName: baidu.com
 DNSName: baifubao.com
 DNSName: www.baidu.cn
 DNSName: www.baidu.com.cn
 DNSName: click.hm.baidu.com
 DNSName: log.hm.baidu.com
 DNSName: cm.pos.baidu.com
 DNSName: wn.pos.baidu.com
 DNSName: update.pan.baidu.com
 DNSName: mct.y.nuomi.com
 ]
 Trust this certificate? [no]:  yes
 Certificate was added to keystore

注意:因为是静态加载,所以要重新启动你的应用,证书才能生效。9

巽寮湾三角洲岛

公司组织的一次集体活动.早上7.20从深圳出发,去到惠东坐了渔船出海看渔民怎么捕鱼,感觉挺无聊,船开到一半开始撒网,之后让船慢慢飘,然后中途有帅哥上里推销你坐快艇,带你到两个岛屿进行拍照,但是需要另外收费.索性没有去坐快艇,一个时间不允许,二来下午我们也要坐快艇去三角洲岛.

再说三角洲岛是中国第一个拥有合法产权的私人海岛,海岛占地十六公顷,一向以“水清,石奇,沙幼”三绝著称于南海。它有“中国的马尔代夫”之美誉。从广州出发只需要一个半到两个小时的车程,这里没有冬天,是四季皆宜的亲海圣地。

上岛后才发现其实娱乐设施很缺乏,就只能玩玩水、玩玩沙.

2015111902

他好像条狗阿!

依稀是2000年左右开始看星爷的电影,那时候买不起电影票,在小卖部看别人放的影碟(VCD),从百变星君、整蛊专家、算死草、大话西游、逃学威龙、唐伯虎点秋香、功夫等等,每一部都能笑到合不上嘴.

今天在朋友圈看到一位老友写了这句话,“他好像条狗啊!”还有这张截图,回想起了我所理解的大话,以及给我的感动.

记得第一次看大话的时候,腹背抽筋,龇牙咧嘴,什么都没看懂.直到2012年之后,再去看大话,开始笑不出来,发现脸上开始有泪水.当至尊宝带上紧箍咒前的话却那段刻骨铭心的台词时:

  曾经有一份真诚的爱情摆在我的面前,我没有珍惜,等到失去的时候才追悔莫及,人世间最痛苦的事情莫过于此。如果上天能够给我一个重新来过的机会,我会对那个女孩子说三个字:‘我爱你’。如果非要给这份爱加上一个期限,我希望是,一万年。”

心里总有一种莫名的心酸,有机会时嘻嘻哈哈,至尊宝第一次说这段台词是为了骗紫霞仙子,第二次在说是已经是大彻大悟,而却没有机会当着紫霞仙子的面说了.从至尊宝带上紧箍咒那一刻起,从此爱情将与他无关,从至尊宝到孙悟空的蜕变,也是见证了男孩到男人的历程,留在心底确是最深的伤痛.2015081802

最后的那个一句”我看得了,他好像条狗啊!”,紧箍咒往至尊宝头上扣的那一刻起,就决定了像条狗.用男人的思想,这是一个男人的无奈.

师傅的话:”等你明白了舍生取义的道理,你自然会回来和我唱这首歌的。”师傅是父母、老师的形象,那个男人都经历过他们的谆谆教导,而后青春年少的叛逆反抗,而后成为成熟成为男人以后,后由衷的感谢他们的教诲,抑或后悔当初没有他们的话.

牛魔王是一种无形的力量,他夺走了紫霞,夺走了晶晶,也夺走了至尊宝的快乐。从牛魔王的出现至尊宝就么有了无忧的时间,为了把找回晶晶,最爱的紫霞一度的把希望寄托在月光宝盒上面,希望可以通过时间穿越避开与牛魔王的正面交锋,找回自己的东西,在这个幻想一而再的破灭之后才醒悟,至尊宝没有这个能力,只有带上紧箍咒成为孙悟空,才有与牛魔王一战的实力。

这个像是一个极大的讽刺,想得到需要先放弃,不管选择至尊宝或者孙悟空都会失去,至尊宝快乐总是很短暂,孙悟空是无尽的痛苦,    这真是一个极大的讽刺。你想要得到吗?那么好吧,你先放弃吧。你必须做出选择,作至尊宝,那么快乐总是很短暂,作孙悟空,你就要忍受无尽的痛苦。
这个世界的规则好象是牛魔王制定的,那么恶毒,在它面前,那段经典的台词显得多么的苍白无力,只能成为一个男孩子蜕变成男人的时候留在心底最深的伤痛。
唐僧说话的方式从来就没有变过,只是在至尊宝醒悟的前后听来有完全不同的感受。那么至尊宝是自觉自愿的醒悟吗?不,他并不愿意,但是他必须拯救紫霞,必须化解人间的恨,他别无选择。虽然成为了孙悟空,成了大英雄,但他对自己的生存状态极度不满。片子的最后,孙悟空将他心中残存的至尊宝的影子幻化作一位夕阳武士,在对现实世界彻底失望后,只能构造一个虚幻的想象来了却这桩心愿,并借武士的口中表达了对自己生存状态的不满,活得好象是一条狗一样。唉,一个男人的悲怆和无奈。

 "生又何哀,死又何苦。"

很早就听说过,如果你能理解大话中,”他好象一条狗”那么你才是真正理解了《大话》
也许我还不能完全明白…………..喜欢大话喜欢那种明明相爱却又不能死守终生的遗憾和悲哀。我只能这样骗自己,
也许她也有她的苦衷。发现自己真的的接近于疯狂。大概是太过于同情怜悯自己了,才深深地喜欢着这个故事。

2015081801