php curl請求時,設置客戶端證書及私鑰

由於以前沒有接觸到https雙向認證,因此有點陌生。
由於ssl證書和私鑰都是對接方提供的,個人理解以下:
ssl證書攜帶了客戶端的公鑰,
對方服務器使用客戶端的私鑰驗證,再用服務端的公鑰加密返回
客戶端再用設置的私鑰解密造成通道,雙方在通道中發收數據。
以前看別人文章時,完整流程還涉及了對稱加密,這裏先記下此次遇到的問題吧,若是有錯誤,歡迎指正。
php的curl代碼以下:~~~~php

$sslcert = 'ssl證書.pem';服務器

$sslkey = 'ssl證書私鑰指定文件';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, '地址');
    curl_setopt($ch, CURLOPT_PORT, 443);
    curl_setopt($ch, CURLOPT_HEADER, ['Content-Type: application/xml']);
    // 客戶端ssl證書
    curl_setopt($ch, CURLOPT_SSLCERT, $sslcert);
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '密碼');
    curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
    // 私鑰
    curl_setopt($ch, CURLOPT_SSLKEY, $sslkey);
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, '密碼');
    curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, '發送的數據');
    //驗證對方的證書
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
    //以字符串形式輸出
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
相關文章
相關標籤/搜索