2009-10-28 35 views
8

Tôi đã làm theo hướng dẫn tại How to build an Apple Push Notification provider server (tutorial) trong nỗ lực thiết lập máy chủ thông báo đẩy.Dịch vụ thông báo đẩy của Apple: Phía máy chủ cài đặt chứng chỉ?

Khi tôi cố gắng để kết nối với mã PHP sau

// connect to apns server 
$strAPNSUrl = 'ssl://gateway.sandbox.push.apple.com:2195'; 
$strAPNSCert = 'dev.pem'; 

// generate stream 
$oStreamContext = stream_context_create(); 
stream_context_set_option($oStreamContext, 'ssl', 'local_cert', $strAPNSCert); 

// create the socket connection 
$oAPNS = stream_socket_client($strAPNSUrl, $iError, $strError, 2, STREAM_CLIENT_CONNECT, $oStreamContext); 

tôi nhận được cảnh báo sau đây

Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert

Dựa trên những thông tin tôi đã có thể tìm thấy trên Google, vấn đề dường như là chứng chỉ của tôi.

Tôi đang tạo tệp csr và pem của mình trong OS X (tệp pem theo hướng dẫn trong hướng dẫn). Khi tôi đã tạo dev.pem, tôi đang tải nó lên nhà cung cấp dịch vụ lưu trữ và cố gắng chạy tập lệnh php của mình. Đây có phải là cách chính xác để tạo và "cài đặt" chứng chỉ không?

Tôi đã hết các ý tưởng gỡ lỗi. Bất kỳ hướng nào sẽ là tuyệt vời.

Trả lời

8

Đường dẫn đến dev.pem không chính xác trên máy chủ của tôi.

Hướng dẫn thực sự là cách chính xác để tạo tệp .pem. Khi được tạo, nó có thể được sử dụng trên bất kỳ máy nào (không chỉ máy đã tạo ra nó).

+0

Bạn có thấy bất kỳ vấn đề nào như Đường dẫn tuyệt đối và tương đối không? –

+0

Tôi đã viết sai chính tả tên tệp của tệp .pem trực tiếp của tôi. -.- Kept nhìn vào nó cho đến khi tôi thấy câu trả lời này là những gì làm cho tôi "cẩn thận" nhìn vào nó. – James

1

Bạn có thể sử dụng cùng một tệp .pem trong máy chủ của mình không? Và như bạn đã nói ... trên bất kỳ máy nào.

Tôi đã làm theo hướng dẫn này và tôi có thể gửi tin nhắn từ máy của tôi (chứng chỉ đã được tạo) nhưng tôi đã thử sao chép tất cả các tệp và chạy tập lệnh trong máy khác và tôi gặp lỗi tương tự có.

Bạn đã làm như thế nào để hoạt động trên máy khác? Bạn đã cài đặt tệp .pem chưa? Bất kỳ cấu hình đặc biệt nào?

Chúc mừng

+0

Theo như "cài đặt" tệp .pem, tất cả những gì tôi phải làm là sao chép nó vào một thư mục cục bộ trên máy chủ của tôi. Vấn đề là tôi đã di chuyển kịch bản php của tôi vào một thư mục cron nơi tôi giữ các công việc cron của tôi, và không sao chép qua tệp .pem. Khi tôi đã chuyển tệp .pem, tất cả đều tốt. Nhà cung cấp dịch vụ lưu trữ của tôi đang chạy Linux, vì vậy tệp .pem sẽ tốt cho bất kỳ nền tảng nào. –

+0

Quyền đối với tệp có thể là một vấn đề. My .pem được đặt thành 644. –

+0

@Jason George Tôi đã thay đổi quyền đối với tệp nhưng lỗi không thay đổi. Tôi đã thực hiện gần như cùng một điều mà bạn đã nói. Tôi đã cấu hình máy, kiểm tra và mọi thứ đã hoạt động. Vì vậy, tôi đã cố gắng để sao chép tất cả mọi thứ và đặt trong một mac mà tôi có, nhưng trong máy này tôi nhận được lỗi này. – vfn

Các vấn đề liên quan