Charles Proxy 自定义 CA 证书的例子

Charles Proxy 跟 Windows 平台下的 Fiddler 一样可以查看 HTTPS 流量,但使用 Charles 官方提供的 CA 证书检查 HTTPS 请求时,Firefox 35 下网页会出现如下错误:
twitter.com uses an invalid security certificate. The certificate is not trusted because the issuer certificate has expired. (Error code: sec_error_expired_issuer_certificate)
据说原因是这样的:

The more recent versions of Firefox only allow certs with start dates after the unix epoch (1st Jan 1970). As the Charles CA cert has a start year of 1899 it’s seen as expired.
最新版本的 Firefox 只允许证书的起始时间在 1970 以后,而 Charles CA 证书的起始时间是 1899。
解决办法是自建一个证书。

自建 CA 证书

我的过程基于 openSUSE 13.2 操作系统。
逐行执行以下命令(openSUSE 下需要管理员权限)。

mkdir -p /usr/local/CharlesCA
cd /usr/local/CharlesCA
mkdir certs private newcerts
echo 01 > serial
touch index.txt

生成 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

请注意 -config 后指向的路径,这里是我 openSUSE 下 openssl.cnf 文件路径,请根据自己的操作系统确认其路径。

这一步中也会要求填写 passphrase 及其它信息,passphrase 后面在 Charles 中会用到。
转换为 PKCS12 格式
因为 Charles 需要 pkcs12 格式的证书,所以还需要做个转换:
openssl pkcs12 -export -out ca_cert.pfx -inkey private/ca_key.pem -in certs/ca_cert.pem
这样,/usr/local/CharlesCA 目录下会生成 ca_cert.pfx 文件。
我们总共得到了 3 个重要的文件:

ca_cert.pfx – charles 添加自定义证书用的
ca_cert.pem – 提供给客户端使用的
ca_key.pem – 钥匙(请保证它的安全)

配置 charles
打开 charles -> Proxy -> Proxy Settings… 菜单
点击 SSL 标签页

勾选 ‘Use a custom CA certificate’
点击 CHOOSE 按键,选择 /usr/local/CharlesCA/ca_cert.pfx 文件
这样就配置好 charles 的证书。

导入证书到 Firefox

打开 Firefox -> Preferences
选择 Advanced -> Certificates 标签页
点击 VIEW CERTIFICATES
点击 IMPORT...

定位到 /usr/local/CharlesCA/certs/ca_cert.pem 文件
勾选 ‘This certificate can identify websites’
确认
最后重启 Charles,会弹窗口要求填写上面创建证书时设置的 passphrase。之后 https 流量可以正常分析了。

时间: 2024-10-02 23:33:02

Charles Proxy 自定义 CA 证书的例子的相关文章

Apache1.3.27+mod_ssl+自定义SSL证书

绝对蓝屏 [ ihweb ](黄华栋) <ihweb@cnfug.org> Apache 1.3.27+mod_ssl+自定义SSL证书在我发表第一篇文章里介绍了用FreeBSD 的Ports 来安装方便简单,可更多使用者使用的OS非FreeBSD或想自己下载他们的原代码自己编译安装的.以下是作者在FreeBSD 4.8 stable平台下,一步一步编译安装Apache 1.3.27+mod_ssl的过程. 1.下载所需的安装包 FBSD# pwd /tmp/install FBSD# fet

设置CA证书来强化PostgreSQL的安全性的教程_数据库其它

在经历了多次的摸索实验后我终于成功地实现了SSL证书认证的功能,因此我想这次我要把这些步骤记录下来供日后查阅. 出于安全和方便的原因,我要在一台单独的专用机器上签署客户的证书,这台机器也称为 证书授证中心(CA). 这让我们在授权新的客户端时不必先登录到PostgreSQL服务器然后再签署证书或者修改pg_hba.conf. 我们要创建一个特殊的数据库组,叫sslcertusers.这个组里的所有用户都可以通过由CA签署的证书进行连接. 在下面的例子中,请将"trustly"替换成你的

VPN用户在外网通过ISA (CA证书)访问域内VPN服务器

一般情况下VPN用户在连接VPN服务器是是要输入密码的,如果这样的话,那么在一些公共场合输入密码的时候很有可能造成密码的泄露,从而造成不必要的损失.口令验证协议虽然硬件上的要求没有质询握手协议那么高,但是,在安全性上面,其跟质询握手协议还是有一段距离.具体要采用哪一种身份验证协议,用户要根据自己的安全级别进行判断.今天我做的这个实验是:VPN用户在外网连接VPN服务器来访问域内的资源时,不需要输入密码,而是通过CA服务器验证VPN用户的身份. 实验环境:beijing内网的域控制器.DNS服务器

如何为IIS添加CA证书以支持https

一.在IIS中生成Certificate Signing Request (CSR) 个人理解:生成CSR就是生成"私钥/公钥对"之后从中提取出公钥. 1. 打开IIS Manager,在根节点中选择Server Certificates(服务器证书),点击右侧的Create Certificate Request...,然后填写相应的Distinguished Name Properties(见下图). Common name中填写域名(如果用于所有二级域名,填*.域名),Organ

php-PHP网页实现CA证书的验证

问题描述 PHP网页实现CA证书的验证 因为最近一个项目需要验证用户的签名证书.对于整个流程不是太熟悉,不知道这个是服务器端直接验证.还是说需要ActiveX控件获取证书后发送给网页来验证.求解 解决方案 首先要判断用户签名证书使用的签名算法,比如RSA.DSA.ECDSA等等:证书中还含有公钥,用公钥解密证书信息,看是否和加密前一致,验签结束. 解决方案二: 验证用户的签名需要在ssl handshake阶段.这个是服务器端验证 解决方案三: 服务器是ssl就可以了.不需要自己写程序验证的.

使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件

要安装kubernetes最新版集群,https://github.com/opsnull/follow-me-install-kubernetes-cluster 这个文档必须要研习一下了. 以下实验就摘自这个文档的开始. ================================================ 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件, CA 是自签名的证书,用来签名后续创建

class-举个在xml文件中通过全限定类名调用自定义的类的例子

问题描述 举个在xml文件中通过全限定类名调用自定义的类的例子 举个在xml文件中通过全限定类名调用自定义的view的例子 关键代码如何的,谢谢解答 解决方案 http://www.educity.cn/wenda/82552.html

安卓 ca证书-安卓“受信任的CA证书”(5.0)

问题描述 安卓"受信任的CA证书"(5.0) 我的手机安装了许多"受信任的CA证书",不知道是什么时候安装的,也不知道哪些有用?现在一些应用不能使用了,求大神指教!谢谢 解决方案 受信任证书只是让你的程序接收这个证书,不会导致你应用不能用,反倒要是删除一些证书可能会一些应用不能使用

openssl-OpenSSl生成证书,用rsa生成ca证书,接着用dsa生成server或client证书时出错

问题描述 OpenSSl生成证书,用rsa生成ca证书,接着用dsa生成server或client证书时出错 RSA: CA:1.openssl genrsa -out ca-key.pem 1024 2.openssl req -new -out ca-req.csr -key ca-key.pem -config openssl.cnf 3.openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days