2009-01-13 114 views
5

編輯:還沒有解決我的問題,但我已經轉移到新的和更令人興奮的問題。
如果任何人有足夠的洞察力,並且能夠幫助未來絆倒這個問題的人,那就留在這裏吧。Openssl命令行麻煩

嗨, 我試圖發送一個加密的電子郵件從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一個小白的,所以我可能會丟失一些愚蠢的事(我敢肯定,如果它,哈哈)。

回答

6

您應該通過提供的腳本創建一個新的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(Common Name)作爲您的電子郵件地址非常重要。

現在你只需要簽名並且你有一個完整的證書。

$ ./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: 

等voilà。您有一個PKCS#12文件,您可以在Windows中雙擊並將其導入到密鑰庫,並將其用作郵件簽名證書(我不記得默認選項是否足夠,或者您需要在創建證書,以便Outlook將其識別爲電子郵件簽名證書)。您還需要將CA證書導入爲受信任的CA(將cacert.pem複製到demoCA目錄中的cacert.cer,然後雙擊它導入)。

+1

感謝您的真棒答案。你真的把所有的隨機文檔總結成一個讓所有人都齊聚一堂的形式。謝謝!僅供參考,似乎CA.pl/sh允許創建PKCS#12文件。 CA.pl -pkcs12「[email protected]」 – 2009-01-14 15:38:47