5

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

嗨,我正在尝试将加密的电子邮件从 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 方面我有点菜鸟,所以我可能会遗漏一些愚蠢的东西(我敢肯定,哈哈)。

4

1 回答 1

6

您应该通过提供的脚本创建一个新的 CA,这比处理所有 openssl 选项更容易。您可以通过在 Windows 本身中与 Cygwin 捆绑的 openssl 或使用您最喜欢的 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 并双击它以导入)。

于 2009-01-13T21:33:00.973 回答