归档文章: Security

android firefox 导入根证书

firefox浏览器(包含android平台)没有使用操作系统的证书库(意味着, 如果操作系统自己导入并存在的证书, firefox 并无法使用), 而是firefox自己独立的一套证书库 (这样就需要我们在firefox 浏览器中重新导入一份). 在桌面版本的firefox里(如windows) 可以在设置里进行导入证书. 但是android版本没有导入证书(证书管理)的入口. 但是我们可以通过firefox 打开证书并直接导入的方式.

例如我们有一个自签根证书CA.crt , 我们将此文件放到某个服务器上. 例如搭建一个内网的http服务, 将此CA.crt放到该服务器上. 通过android firefox 打开 http://192.168.1.2/CA.crt, firefox 自动下载该文件后, 发现是一个证书文件, 会自动提示加入到firefox的证书库. 这样firefox里就导入成功了.

参考资料:

  • firefox for andorid 是否使用了设备(系统的)的证书库
  • https://stackoverflow.com/questions/14981179/does-firefox-for-android-use-the-devices-certificate-store

  • 移动版本(例如android)的firefox如何修改我的证书列表
  • https://support.mozilla.org/zh-CN/questions/1140625

    https ssl证书是如何工作的

    今日通过cloudflare将www.hissummer.com下网站全部配置加载了https证书,保证了用户访问的安全性。

    浏览器是如何检查https ssl证书是否有效呢?

    我们可以使用如下在线工具来查看工作过程。 https://www.sslshopper.com/ssl-checker.html

    打开后,输入www.hissummer.com

    • www.hissummer.com resolves to 104.31.74.1  解析ip地址
    • Server Type: cloudflare  服务的类型,是谁提供的服务。 我们使用了cloudflare的cdn服务,所以这里返回的是cloudflare
    • The certificate should be trusted by all major web browsers (all the correct intermediate certificates are installed).  检查证书的证书链是否都是授信的。(发现均已安装)
    • The certificate was issued by Comodo.   证书的发行方
    • The certificate will expire in 174 days.  证书的有效期
    • The hostname (www.hissummer.com) is correctly listed in the certificate.   www.hissummer.com 是在证书里所列出的有效域名。

    所以这时候我们的浏览器的地址栏上,就会有一把绿色的锁标志,代表着我们的网站是安全的。

    备注: 关于混合内容的问题,如果我们的https 的网站里面又请求了http的一些资源,那么浏览器仍然会认为是不完全安全的。

    sonarqube 7.0 新功能及安装

    2018年2月份sonarqube 7.0 发布 ,加入了一个长期被使用者期望的需求。 即关注新引入代码的质量,可以从新的代码开始不遗漏任何新代码违规问题的引入。

    如何安装? 更多…

    透明代理 fiddler https解析

    大家都知道fiddler是可以解析https数据包的。 但如果是透明代理的方式使用fiddler抓包则需要额外做一些设定。

    通常设定代理的方法为:
    手机或者浏览器(程序客户端), 设定代理地址和端口号(fiddler默认监听 本机地址和8888 端口号)。 这样当手机或者浏览器发起http/https 请求时, 会被fiddler截获。

    关于fiddler如何捕捉https并解密, 需要打开Tools -》 Tlerik Fiddler Options -》 Https 标签, 勾选 Capture https connects 和 decrypt https traffic。 通常我们为了方便捕获到一些自签名服务器证书的请求访问, 可以勾选 Ignore server certificate errors。

    这时我们就可以截取https 的数据包了。 更多…

    计算机证书相关知识总结

    我们不是谈 毕业证书这种证书。 说的是计算机里的证书概念。 对于大多数计算机工作的同学想必对这个术语肯定是不陌生的,但并不是所有人会亲自使用,大部分可能是被动的用到了。 证书 certificate 是 TLS(transport layer security) 里一个重要的组成部分(模块), 大多数我们过去经常称为  SSL . 这个也许你就不陌生了。 顾名思义, 这个是和安全相关的。

    谈到证书,免不了要简单说下 key (钥匙)。  证书是用来证明, 而为了传输数据的安全, key也是必不可缺的部分。 下面我们来看看, 证书(简写为cert)和钥匙是如何配合来保证传输数据的安全的。

    一TLS(SSL)工作机制

    1. 例如我们访问一个网站通常是https(https://).
    2. 网站发来公钥和它的证书 (稍后我们来讲如何生成钥匙和证书)
    3. 我们的浏览器确认这个证书是否是被三方可信的机构签证的证书,如果是有效且可信的,浏览器会认为是安全的。否则会提示你不安全的链接。
    4. 这时候浏览器收到了公钥, 然后用公钥加密一个随机的对称钥匙串,和加密后的url地址和http请求数据发送给服务器。
    5. 服务器收到了加密的一个钥匙串(上一步客户端浏览器随机生成的)。这时候可以解密(通过私钥解密)拿到客户端随机生成的密钥(对称密钥)。并用此密钥解密http请求并拿到http请求数据。
    6. 此时服务器处理此客户端的请求,然后将处理结果用密钥(还是随机生成的密钥)加密后,发送给客户端的浏览器。
    7. 浏览器解密数据,并展现。

    更多…

    java语言多线程加锁的各种情况

    非特殊情况下,多线程下的临界资源都必须加锁。 如下列出了一些多线程情况下的需要如何加锁。

    1。 只是读操作,没写操作,不用加锁;

    2。 如果有写操作,但是变量的写操作跟当前的值无关联,且与其他的变量也无关联,可以使用“开销较低的读-写锁”。 即对变量加上volatile关键字,写操作方法通过synchronized加锁;(如果是android开发, 关于volatile 在android 的dalvik vm的实现应该是没有问题的,可以问下相关android专家 )

    3。 如果有写操作,写操作依赖变量的当前值(如:i++),则读和写操作方法都要通过synchronized加锁。

    关于nf_conntrack以及和ip_conntrack的区别

    网上关于ip_conntrack的介绍并不少。 Linux内核的ip_conntrack模块会记录每一个tcp协议的estiablished connection记录。关且一个默认的timeout值是432000秒(五天时间)。每个ip_conntrack记录约会占用292Bytes的内存,所以系统所能记录的ip_conntrack也是有限的,如果超过了这个限度,就会出现内核级错误“ip_conntrack: table full, dropping packet”,其结果就是无法再有任何的网络连接了。
    更多…

    使用vps搭建openvpn server来查阅外文资料

    如果你买了国外vps, 那么可以搭建自己的专署vpn 服务器.  其实你也可以直接购买vpn服务了, 只是稳定性和带宽你自己无法保证,都是靠人家公司的一张嘴.   不过最重要的是, 一旦用的人多了,  被某些别有用心的部门了解到,  可能会直接封锁提供服务商的ip.

    如果你购买vps, 那么相对来说容易的多.  或者cloud server 也一样. 例如使用aws ec2, 你可以自己获取一个公网ip 只给自己来做vpn server, 安全性, 和稳定性,自己都可以完全保证.

    aws ec2 上instance 和  一些(vps) 稍有些区别: 更多…

    密码中为什么要加盐

    当然这里不是说做饭,加盐不是为了好吃。加盐在密码学里主要是为了安全性。

    在密码学历,盐指的就是一段随机的比特(数据),用来创建一段输入的数据。加盐就是为了扰乱正常的数据,防止被别人猜测。 例如经常用到的密码,通行码等。

    例如我们用这个密码whoistester,则为了安全性,我们往往要进行单向加密。 例如使用md5加密。但是md5加密后的结果, 如果我们通过黑客行为或者监听等,拿到密文后。可以通过一些md5反向解密的大数据库里查询到原文内容。 这样安全性有很大的危险。

    如果我们加盐,那么猜测的难度将会大大加大。

    例如:

    加盐前: whoistester   1234e21d38c93ff1191306542f7d138b(加密后的密文)

    加盐后,假设我们的盐是4567890, 通过我们的加盐方法,加进去。

    加盐后:w4h5o6i7s8t9e0ster cf934628e2937bbd1cb86fd716fdff72

    这种情况下,如果黑客截取到了 1234e21d38c93ff1191306542f7d138b  和 cf934628e2937bbd1cb86fd716fdff72 , 并解密得到原文 whoistester 和w4h5o6i7s8t9e0ster ,这时候加盐的密码串,就很难被黑客猜到哪个才是真正的密文。 这样显而易见就提高了安全性。