【问题标题】:Openssl command line troublesopenssl 命令行问题
【发布时间】:2010-10-01 05:51:34
【问题描述】:

编辑:还没有解决我的问题,但我已经转向新的更令人兴奋的问题。
把这个留在这里,以防有人有洞察力,这将有助于将来偶然发现这个问题的人。

嗨, 我正在尝试将加密的电子邮件从 php 发送到 Outlook。因此,我需要生成一个证书以导入到 Outlook 中。我使用 openssl 和随附的 CA.pl 脚本生成一组密钥没有问题,但是当我尝试运行命令生成 PKCS12 文件以导入到 Outlook 中时,它抱怨缺少“demoCA”目录。看来这个目录是openssl的一部分,并在openssl配置中被引用......但我不知道它在哪里。我已经以多种方式搜索了驱动器,从 grep 到聚光灯(在 os x 上,虽然我真的没想到聚光灯会找到任何东西),但什么也想不出来。

我试图运行的命令是:

$ openssl ca -cert newcert.pem -ss_cert newcert.pem
Using configuration from /sw/etc/ssl/openssl.cnf
./demoCA/private/cakey.pem: No such file or directory trying to load CA private key
19918:error:02001002:system library:fopen:No such file or directory:bss_file.c:245:fopen('./demoCA/private/cakey.pem','r')
19918:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:247:

在加密/SSL 方面我有点菜鸟,所以我可能会遗漏一些愚蠢的东西(我敢肯定,哈哈)。

【问题讨论】:

    标签: encryption outlook openssl


    【解决方案1】:

    您应该通过提供的脚本创建一个新的 CA,这比处理所有 openssl 选项更容易。您可以通过将 openssl 与 Windows 本身内部的 Cygwin 捆绑在一起或使用您最喜欢的 Unix 发行版来做到这一点。我将向您展示如何使用 bash 脚本(但 perl 脚本应该相同)。

    $ ./CA.sh -newca
    

    这将创建 demoCA 目录,其中包含 CA 证书。当您调用上述命令时,您将收到有关 CA 证书(CN、OU 等)和 CA 私钥密码的字段的提示。

    现在您可以创建证书请求或根据证书请求创建证书。

    $ ./CA.sh -newreq
    

    这会提示输入新的证书请求字段和密码以加密生成的私钥。默认情况下,请求保留在与 CA.sh (newreq.pem) 相同的目录中。请务必使用您拥有的电子邮件地址作为 CN(通用名称)。

    现在你只需要签署它,你就有了一个完整的证书。

    $ ./CA.sh -sign
    

    这将生成 newcert.pem,它是签名的证书请求。您拥有证书,只需将证书和私钥打包到 Microsoft CSP 可识别的 PFX 或 P12 文件中。

    然后将newreq.pem和newcert.pem的内容复制到一个文件中。

    $ cat newreq.pem > keypair.pem
    $ cat newcert.pem >> keypair.pem
    

    现在通过 openssl shell 生成 P12 文件(这次我们没有任何脚本的帮助)。它会提示您输入生成请求时使用的密码,然后是导出密码(用于加密 p12 文件中的私钥)。

    $ openssl pkcs12 -export -in keypair.pem  -out mykeypair.p12
    Enter pass phrase for keypair.pem:
    Enter Export Password:
    Verifying - Enter Export Password:
    

    等等。您有一个 PKCS#12 文件,您可以在 Windows 中双击该文件并将其导入您的密钥库并将其用作邮件签名证书(我不记得默认选项是否足够,或者您在创建证书,以便 Outlook 将其识别为电子邮件签名证书)。您还需要将 CA 证书作为受信任的 CA 导入(将 cacert.pem 复制到 demoCA 目录中的 cacert.cer 并双击它以导入)。

    【讨论】:

    • 感谢您的精彩回答。您确实将所有随机文档汇总成一种形式,使它们融合在一起。谢谢!仅供参考,似乎 CA.pl / sh 允许创建 PKCS#12 文件。 CA.pl -pkcs12 "email@example.com"
    • 也许我的 openssl 版本太旧了 :-)
    • 哇,很好的答案,也与我正在使用的东西有关。谢谢。
    • 非常节省时间,但不应该是这样:$ cat newkey.pem > keypair.pem $ cat newcert.pem >> keypair.pem
    • 不,这是正确的,因为请求包含私钥,并且您还只需要签名请求(证书)具有对 PKCS#12 文件有效的密钥对
    猜你喜欢
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2011-08-02
    • 2020-12-29
    • 2020-12-26
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多