簡體   English   中英

在PHP中使用ssl cert時出錯

[英]Error using ssl cert with PHP

我是php的新手,我在嘗試加載證書時遇到此錯誤

jameys-macbookpro41:~ user$ php -f ~/Sites/providerService.php

警告:stream_socket_client():無法設置本地證書鏈文件`cert.pem'; 在第27行的/Users/jamey/Sites/providerService.php中檢查您的cafile / capath設置是否包含證書及其頒發者的詳細信息

cert.pem與php文件位於同一文件夾中。 文件cert.pem是在Apple鑰匙串工具中創建的

class pushNotifications {
...
     private $sslPem = 'cert.pem';
...
     function connectToAPNS(){
          $streamContext = stream_context_create();
          stream_context_set_option($streamContext, 'ssl', 
             'local_cert', $this->sslPem);

謝謝你的幫助!

您收到錯誤是因為它試圖在您運行腳本的目錄中找到cert.pem文件,而不是腳本所在的目錄。在您的示例中,它是您的用戶目錄“〜”。

嘗試將您的課程更改為此類或類似內容:

class pushNotifications {
...
     private $sslPem = 'cert.pem';
...
     function connectToAPNS(){
          $streamContext = stream_context_create();
          stream_context_set_option($streamContext, 'ssl', 'local_cert', dirname(__FILE__) . '/' . $this->sslPem);

我也有這個問題,事實證明,由於某些原因,我的私鑰與aps_developer_identity.cer關聯的私鑰不匹配我...

我最終從我的“登錄”鑰匙串項目中清除了所有公鑰和私鑰,然后我重新開始整個過程​​(生成請求)...我在程序門戶上提交了新請求文件並生成了新證書雙擊它(developer_identity.cer),下載並安裝它。 然后,我重置配置文件以使用新的Push SSL證書,下載這些證書,然后通過雙擊(aps_developer_identity.cer)安裝它們。 最后,我重置了配置文件並下載了新配置文件。 我在Xcode Organizer中清除了舊的,並安裝了新的。 最后,我將'private'鍵作為key.p12導出,將我的aps_developer_identity.cer導出為apsdi.p12,並對它們運行以下命令:

openssl pkcs12 -clcerts -nokeys -out apsdi.pem -in apsdi.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12

如果你可以使用密碼短語(推薦用於制作):

cat apsdi.pem key.pem > cert.pem

如果您希望使用“空白”密碼短語,則需要首先使用在將其轉換為pem格式時指定的密碼來解密您的私鑰:

openssl rsa -in key.pem -out key.unencrypted.pem

然后將證書和未加密密鑰插入apns.pem(或您選擇的任何文件名):

cat apsdi.pem key.unencrypted.pem > apns.pem

導出aps_developer_identity證書非常重要, 而不是像apsdi.pem那樣導出developer_identity證書。

如果您可以在Keychain Access中擴展developer_identity.cer和aps_developer_identity.cer條目,並且在執行操作時看到“私有”密鑰,則一切都應該有效。

作為補充提示,對於任何具有相同問題的人:從Apple的鑰匙串訪問中導出私鑰,並轉換為.pem時,指定密碼。

出於某種原因,似乎在其中一個導出中留下空白密碼會刪除私鑰,因此最終的.pem不完整。

因此,即使您稍后使用openssl刪除它,也要輸入一個虛擬密碼。

只需將所有者更改為www-data就可以了:)

sudo chown www-data.www-data ck.pem

apache www-data的聾人用戶

未來的注意事項(因為所有這一切后頭痛):1。如果你得到握手錯誤 - 你創建的pem文件可能是錯誤的。

一個。 確保該文件與您嘗試運行的php位於同一目錄中。 在鑰匙串訪問實用程序中導出certifcate p12文件及其下的密鑰。這些文件中的兩個將是相同的大小,但它們是不同的。 C。 在macintosh終端上執行上面的“openssl”命令。

  1. 目前,我所能做的就是將php作為sudo運行,因為ck.pem的chmod為400。 有些東西要給......

順便說一句,當系統正常運行時,消息“無法啟用加密”將消失。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM