编辑:没有解决我的问题,但我已经转向新的和更令人兴奋的问题.
离开这里以防万一有人和有见识的人会帮助将来偶然发现这个问题的人.
嗨,我正在尝试从php发送加密电子邮件到outlook.因此,我需要生成一个证书以导入outlook.我使用openssl和随附的CA.pl脚本生成一组密钥没有问题,但是当我尝试运行命令生成要导入到Outlook的PKCS12文件时,它会抱怨缺少"demoCA"目录.看来这个目录是openssl的一部分,并在openssl配置中引用...但我不知道它在哪里.我从很多方面搜索驱动器从grep到spotlight(在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时,我有点像菜鸟,所以我可能会错过一些愚蠢的东西(我很确定,如果它,哈哈).
您应该通过提供的脚本创建一个新的CA,这比处理所有openssl选项更容易.您可以通过Windows内部与Cygwin捆绑的openssl或使用您喜欢的Unix发行版来实现此目的.我将向您展示如何使用bash脚本(但perl脚本应该是相同的).
$ ./CA.sh -newca
这将创建带有CA证书的demoCA目录.在您调用上述命令时,您将会提示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:
Etvoilà.您有一个PKCS#12文件,您可以在Windows中双击并将其导入您的密钥库并将其用作邮件签名证书(我不记得默认选项是否足够,或者您需要在创建时指定一些其他属性)证书,因此Outlook识别为电子邮件签名证书).您还需要将CA证书导入为可信CA(将cacert.pem复制到demoCA目录中的cacert.cer并双击它以导入).