[php-src] Issue #7797: stream_context_create - SSL context options
| From: | lunter2 | Date: | Sun, 19 Dec 2021 18:38:52 +0000 |
| Subject: | [php-src] Issue #7797: stream_context_create - SSL context options | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-238494@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/7797
Author: lunter2
### Description
It is dangerous to store certificates and privateKeys (without a password) on the disk.
Unfortunately, this is needed to load the * .p12 file into stream_context_create.
Please, add the option to set certificates and privateKeys from string content or at least from Data
URLs, instead the file path only.
```
// Using string content
// --------------------
openssl_pkcs12_read(file_get_contents('cert.p12'),$certificates,'pass');
$stream_context = stream_context_create(
[ 'ssl' => [ 'local_cert' => $certificates['cert'],
'local_pk' => $certificates['pkey']
]
]);
```
```
// Using Data URLs
// ---------------
openssl_pkcs12_read(file_get_contents('cert.p12'),$certificates,'pass');
$stream_context = stream_context_create(
[ 'ssl' => [ 'local_cert' =>
'data:,'.$certificates['cert'],
'local_pk' => 'data:,'.$certificates['pkey']
]
]);
```
```
// Hack: temp files
// ----------------
openssl_pkcs12_read(file_get_contents('cert.p12'),$certificates,'pass');
file_put_contents('cert.temp',$certificates['cert']);
file_put_contents('pkey.temp',$certificates['pkey']);
$stream_context = stream_context_create(
[ 'ssl' => [ 'local_cert' => 'cert.temp',
'local_pk' => 'pkey.temp'
]
]);
```
Expected result: Reading certificates and privateKeys without temp files.
Actual result: Reading certificates and privateKeys only with temp files.
### PHP Version
PHP 8.1.1
### Operating System
All