使用certtool在Ubuntu 14系统中创建、签署和部署证书

使用certtool在Ubuntu 14系统中创建、签署和部署证书

我正在尝试了解证书生成、签名以及成为 CA 所需的条件。

我正在开发一个 HTTP 代理,它将成为浏览器和实际 Web 服务器之间的中间代理,用于记录浏览器和实际 Web 服务器之间发送和接收的 HTTPS 消息。

我需要为在 HTTP 代理中浏览的域生成动态证书,我正在开发Ubuntu 14 64位机器。我希望 chrome 在浏览各种网站时能够顺畅运行。

我目前所做的:

  1. 使用以下命令为 CA 创建密钥和自签名证书。

    certtool --generate-privkey --outfile ca-key.pem
    certtool --generate-self-signed --template cert.cfg --load-privkey ca-key.pem --outfile ca-cert.pem
    
  2. 在系统证书存储中明确设置 ca 证书。

  3. 使用以下命令将 pem 转换为 crt 证书

    openssl x509 -in ca-cert.pem -inform PEM -out ca-cert.crt
    

    (需要在certtool中找到对应的命令)

  4. 然后将ca-cert.crt文件复制到 /usr/share/ca-certificates/extra路径并执行以下命令在系统中明确设置 ca 证书。

    sudo dpkg-reconfigure ca-certificates
    

    这样我就可以看到一个系统窗口,我选择ca-cert.crt并按“确定”以在系统中明确设置证书。我的理解是,由于 ca-cert.crt 已在系统中明确设置,因此由该 ca-cert 和 ca-key 签名的任何其他证书都将在系统中受到信任(使用自己的证书存储的应用程序除外,例如 Firefox)。

  5. 接下来我使用以下命令为 HTTP 代理创建密钥:

    certtool --generate-privkey --outfile key.pem
    
  6. 然后我使用以下命令为 HTTP 代理创建了 csr。

    certtool --generate-request --load-privkey key.pem --template cert.cfg --outfile request.pem*
    
  7. 然后我使用以下命令签署了 csr。

    certtool --generate-certificate --load-request request.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template cert.cfg --outfile cert.pem
    

最后我得到了 cert.key 和 cert.pem。现在这些证书文件用于浏览器和我的 HTTP 代理之间的通信。

我发现 Chrome 不会显示收到的内容。但是,如果我以ignore-certificate-errors模式启动 Chrome,Chrome 就会正常工作并正确显示网站内容。

有人可以指导我做错了什么,导致 Chrome 无法显示收到的内容吗?

答案1

您看过模板文件了吗cert.cfg?同一个文件名出现在 的两个不同调用中certtool,这两个调用的目的是相互补充的。

检查两种情况下的模板是否相同。特别是,您应该注意ca每个文件中的 -instruction,以确保它们匹配。

相关内容