2017-05-03 58 views
11

Tôi không thể thực hiện yêu cầu SOAP được mã hóa bằng PHP. Theo tài liệu, tôi mã hóa từng yêu cầu đến cổng thanh toán. Tôi đã tạo một CSR & gửi cho cơ quan có thẩm quyền chứng nhận. Họ đã gửi lại cho tôi chứng chỉ miền & chứng chỉ CA. Vấn đề lớn nhất là tài liệu không có nghĩa là cho PHP. Theo tài liệu:Cách mã hóa mỗi yêu cầu xà phòng trong php

The web service is protected with WS-Security Sign and encryption policy

Sau khi tìm kiếm một thời gian dài tôi tìm thấy một helper class from Git nhưng bất cứ khi nào tôi cố gắng để kết nối tôi nhận được lỗi sau:

lỗi bảo mật chung (Không có chứng chỉ đã được tìm thấy để giải mã (KeyId))

FaultCode : wsse:InvalidSecurity

tôi cố gắng để thiết lập tiêu đề SSL như sau:

$contextOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'cafile'  => '../../certs/CA.cer', 
     'local_cert'  => '../../certs/server.cer', 
     'local_pk'  => '../../certs/private_key.key', 
     'verify_depth' => 0, 
     'allow_self_signed'=>true, 
    ) 
); 

$sslContext = stream_context_create($contextOptions); 

Cập nhật

Tôi định nghĩa các phím như:

define('PRIVATE_KEY', 'server_prvate_key.key'); 
define('CERT_FILE', 'domain_cert.cer'); 
define('SERVICE_CERT', 'CA.cer'); 

Bất cứ điều gì sai trái với định nghĩa này (xin xem link GIT trên)?

+0

Tệp/đường dẫn 'cer' /' key' có tồn tại không? Bạn có xem qua http://stackoverflow.com/questions/7147988/creating-a-php-soap-request-with-a-certificate này không –

+0

@GabrielHeming Có. Các tập tin tồn tại – Shan

+0

Bạn cần xác định đường dẫn đầy đủ đến khóa và chứng chỉ của bạn, lớp trợ giúp đó sẽ không đoán được thư mục nào là – Capsule

Trả lời

6

Bạn đã thử sử dụng curl chưa?

Sử dụng tùy chọn sau để thiết lập chứng chỉ của bạn:

curl_setopt($ch,CURLOPT_CAINFO, 'CA.cer'); 
    curl_setopt($ch,CURLOPT_SSLCERT, 'domain_cert.cer'); 
    curl_setopt($ch,CURLOPT_SSLKEY, 'server_prvate_key.key'); 
    curl_setopt($ch,CURLOPT_SSLCERTPASSWD, 'certificate_password'); //if have 

tôi sử dụng kết nối mã hóa để cổng thanh toán và các dịch vụ khác sử dụng curl và hoạt động giống như một nét duyên dáng.

+0

Tôi đã thử curl Nhưng im nhận được sai sau khi thực hiện curl, sau khi kiểm tra ngoại lệ tôi đã tìm thấy lỗi: "wsse: InvalidSecurityMissing wsse: Tiêu đề bảo mật theo yêu cầu", tôi không biết cách thêm tiêu đề bảo mật! tìm kiếm một lúc và tôi tìm thấy một số mẫu có tên người dùng và mật khẩu – Shan

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