[英]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”命令。
順便說一句,當系統正常運行時,消息“無法啟用加密”將消失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.