Skip to content

SSL context options for in memory cert and pk #7797

Open
@lunter2

Description

@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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions