linux下Tomcat+OpenSSL配置单向&双向认证(自制证书)

背景

由于ios将在2017年1月1日起强制实施ATS安全策略,所有通讯必须使用https传输,本文只针对自制证书,但目前尚不确定自制证书是否能通过appstore审核。

1、必须支持传输层安全(TLS)协议1.2以上版本
2、证书必须使用SHA256或更高的哈希算法签名
3、必须使用2048位以上RSA密钥或256位以上ECC算法等等
4、证书必须是V3版本
以上是几个注意点。主要针对ios的ATS策略


环境

linux: CentOS6.8
tomcat: Apache Tomcat/7.0.63
OpenSSL: OpenSSL 1.1.0c

阅读剩余部分 -

终于搞定LEDE的HTTPS

论坛里有一篇,不过是生成v1版本的证书,现在的Chrome都不认了,折腾了一天,查找了很多资料,终于不完美的搞定了更改/etc/config/uhttpd 里的 option redirect_https '0',可以实现http与https共存

登陆SSH
首先安装opkg install luci-ssl-openssl
修改/etc/ssl/openssl.cnf

阅读剩余部分 -

WIN7-L2TP/IPSec 访问网站连接被重置-错误809的解决办法

开始以为是VPS上服务配置的问题,但是移动设备是连接OK的,所以问题就推到win7系统配置的问题了,因为之前做过优化,所以考虑应该是服务的问题。L2TP属于加密的VPN的一种协议。最初win7是连上之后不能访问“非死不可”,国内的可以访问,后来查了下改了下注册表

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RasMan\Parameters]
"ProhibitIpSec"=dword:00000000

就直接809报错了。
又继续查找,要添加一个注册表的项:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent]
"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002

依然不行。

奇怪了啊,后来在http://www.enet.com.cn/article/2010/0928/A20100928741487.shtml发现有三个服务需要启动(“Remote Access Auto Connection Manager”、“Remote Access Connection Manager”和“Secure Socket Tunneling Protocol Service”),一检查,其中我的“Remote Access Auto Connection Manager”服务是手动的,并未启动,改成自动启动后再连接L2TP/IPSec的VPN,发现一切正常了,访问外网也OK了。

至此,问题解决。

总结了一下:除了要修改上面两个注册表外(因为我设置了ipsec的密钥,没有密钥用L2TP就失去意义了),剩下的就是把三个服务都要自动启动好就可以正常使用了。

阅读剩余部分 -

Windows 7 自带L2TP/IPSec VPN客户端连接攻略

Windows 7 下使用共享密钥建立IPSec连接

步骤1. 启动“设置连接或网络”(控制面板 - 网络和 Internet - 网络和共享中心),选择“连接到工作区”,点击“下一步”

clip_image002

步骤2. 选择“使用我的Internet连接(VPN)”。

clip_image004

阅读剩余部分 -

微信聊天记录读取

根据四哥教程来自己动手实现一下如何读取微信的聊天记录。以下操作需要在手机Root的情况下进行。

微信聊天记录保存位置

微信聊天记录的数据库文件保存在 /data/data/com.tencent.mm/MicroMsg/32位字符串/ 中,名字为 EnMicroMsg.db

微信数据库文件位置

将聊天记录数据库文件导出

使用命令:

adb pull /data/data/com.tencent.mm/MicroMsg/32位字符串/EnMicroMsg.db

 

导出1
直接导出提示不存在,因为是权限的问题。
使用adb root没反应,只好将文件copy到一个非root权限可以操作的目录,这里采用了 /data/local/tmp 文件夹。

cp EnMicroMsg.db /data/local/tmp/

 

然后导出,执行命令 adb pull /data/local/tmp/EnMicroMsg.db

权限不足

提示权限不足,修改权限后导出。

修改权限导出

查看SharedPreferences中保存的UIN的值

切换到 /data/data/com.tencent.mm/shared_prefs 目录,然后执行 grep -rn "uin" * 来查看保存的UIN的值

Shared_Pre文件
查看UIN的值

读取微信数据库文件内容

将手机的IMEI和微信用户UIN值进行拼接后进行md5加密,取小写md5的前七位就是微信数据库的密码。
用Navicat读取数据库文件是提示错误:
Navicat读取数据库文件时提示错误
这是因为微信数据库用的是SQLCipher开源库提供的加密解密算法,读取数据库文件需要使用SQLCipher这个软件。
打开后输入密码,即可看到聊天内容:
微信聊天记录

参考资料

http://blog.csdn.net/jiangwei0910410003/article/details/52238891

via。http://fuping.site/2017/04/09/%E5%BE%AE%E4%BF%A1%E8%81%8A%E5%A4%A9%E8%AE%B0%E5%BD%95%E8%AF%BB%E5%8F%96/ 

阅读剩余部分 -

Android 窃取手机中微信聊天记录

关于如何在 Android 手机上窃取微信聊天记录。

这几天事情比较多,可还是想尽快写下这篇文章。

本以为微信的聊天记录以我本人现存能力获取不到,但经过一番尝试,还是成功了。前提:手机需要已经 root

在我的直觉里,微信的聊天记录一定会是加密的,而且是用了现代密码学中的加密算法,只要官方保存好密钥那么我等平民不可能获取得到。而接下来,我想说的是我等平民如何能够获取到微信的所有聊天记录。

一般来说,Android 应用程序的数据库文件会保存在 /data/data/packagename/database 文件夹下,而微信稍稍有些不同,但也不难发现其数据库文件保存位置,位于: /data/data/com.tencent.mm/MicroMsg 路径下,注意这里有两个像是乱码的很长名字的文件夹,这两个文件夹正是用户的个人信息保存的位置(我这里有两个,估计是之前谁用我的手机登录过微信。。。),再看这个文件夹里面有一个很显眼的数据库文件 EnMicroMsg.db ,凭猜测也可以感觉到前缀 En 应该是 Encrypt 的缩写,果然,用 SQLite Professional 打开提示该数据库文件被加密,具体如下几幅图

阅读剩余部分 -

在引入的css或者js文件后面加参数的作用

<link rel="stylesheet" type="text/css" href="<c:url value='/scripts/jquery-fancybox/jquery.fancybox.css?v=2.1.4' />" media="screen" />

 

有时候可能会遇到js或者css文件引用后传递参数:

 

css和js带参数(形如.css?v=与.js?v=)

<script type=”text/javascript” src=”jb51.js?version=1.2.6″></script>
<link rel=’stylesheet’ href=’base.css?version=2.3.3′ type=’text/css’ />

使用参数有两种可能:

 

  • 第一、脚本并不存在,而是服务端动态生成的,因此带了个版本号,以示区别。  即上面代码对于文件来说 等价于<script type=”text/javascript” src=”jb51.js”></script>                           <link rel=’stylesheet’ href=’base.css’ type=’text/css’ />                   但浏览器会认为他是 该文件的某个版本!
  • 第二、客户端会缓存这些css或js文件,因此每次升级了js或css文件后,改变版本号,客户端浏览器就会重新下载新的js或css文件 ,刷性缓存的作用。大家可能有时候发现修改了样式或者js,刷新的时候不变,就是客户端缓存了css或者js文件,因此加上参数还是有好处的!
  • 第二种情况最多,也可能两种同时存在。

 

 

版本号,可以是一个随机数,也可以是一个递增的值,大版本小版本的方式,或者根据脚本的生成时间书写,比如 20080727182553 就是精确到了生成脚本的秒,而 2.3.3 就是大版本小版本的方式。

阅读剩余部分 -

easy_install与pip 区别

easy_install和pip

 

作为Python爱好者,如果不知道easy_install或者pip中的任何一个的话,那么......
 
easy_insall的作用和perl中的cpan,ruby中的gem类似,都提供了在线一键安装模块的傻瓜方便方式,而pip是easy_install的改进版,提供更好的提示信息,删除package等功能。老版本的python中只有easy_install,没有pip。
 
easy_install的用法:
 
1) 安装一个包
 $ easy_install <package_name>
 $ easy_install "<package_name>==<version>"
 
2) 升级一个包
 $ easy_install -U "<package_name>>=<version>"
 
pip的用法
 
1) 安装一个包
 $ pip install <package_name>
 $ pip install <package_name>==<version>
 
2) 升级一个包 (如果不提供version号,升级到最新版本)
 $ pip install --upgrade <package_name>>=<version>
 
3)删除一个包
 $ pip uninstall <package_name> 

阅读剩余部分 -

meiyoutongji