php ca 校验,PHP和SSL CA验证 – 操作系统独立
這是一個簡單的PHP腳本,它打開一個準備發送HTTP請求的SSL套接字:
$contextOptions = array();
$socketUrl = 'ssl://google.com:443';
$streamContext = stream_context_create($contextOptions);
$socket = stream_socket_client($socketUrl, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $streamContext);
if (!$socket || $errno !== 0) {
var_dump($socket, $errstr);
exit;
}
var_dump($socket);
exit('Socket created.');
這工作 – 我剛剛測試了它 – 但是沒有針對可信CA存儲的驗證.
$contextOptions = array(
'ssl' => array(
'cafile' => 'C:\xampp\cacerts.pem',
'CN_match' => '*.google.com', // CN_match will only be checked if 'verify_peer' is set to TRUE. See https://bugs.php.net/bug.php?id=47030.
'verify_peer' => TRUE,
)
);
$socketUrl = 'ssl://google.com:443';
$streamContext = stream_context_create($contextOptions);
$socket = stream_socket_client($socketUrl, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $streamContext);
if (!$socket || $errno !== 0) {
var_dump($socket, $errstr);
exit;
}
var_dump($socket);
exit('Socket created.');
只要’cafile’存在且具有正確的CA,那么這個例子也有效……
…但是如果不對CA文件名/文件路徑進行硬編碼,我們怎么能這樣做呢?我們正在嘗試創建一些可獨立于OS驗證SSL證書的內容,而無需為運行此腳本的每個服務器單獨配置.
我知道Linux有一個CA目錄,我們可以把它作為’capath’. Windows怎么樣?它在哪里存儲其可信任的CA?我搜索過,遺憾的是這些似乎都在注冊表中,所以我們無法從PHP訪問它們嗎?其他操作系統怎么樣?
總結
以上是生活随笔為你收集整理的php ca 校验,PHP和SSL CA验证 – 操作系统独立的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php项目包导入项目,zend stud
- 下一篇: matlab生产计划问题,基于MATLA