گزینه‌های متنSSL

گزینه‌های متنSSLفهرست گزینه‌های متن SSL

Description

گزینه‌های متن برای انتقالات ssl:// و tls://.

Options

verify_peer boolean

نیازمند تایید گواهینامه SSL.

بصورت پیشفرض FALSE.

allow_self_signed boolean

امکام گواهینامه‌های خودامضا.

بصورت پیش‌فرض FALSE

cafile string

مکان فایل تایید هویت در سیستم فایل محلی به همراه گزینه متن verify_peer برای تایید هویت نقطه دور استفاده می‌شود.

capath string

اگر cafile تعیین نشده باشد یا اگر گواهینامه یافت نشود دایرکتوری اشاره شده با capath جستجو می‌گردد تا گواهینامه لازم یافت شود. capath باید یک دایرکتوری درهم‌سازی شده گواهینامه باشد.

local_cert string

مسیر فایل گواهینامه محلی در سیستم فایل. باید یک فایل کدگذاری شده PEM شامل گواهینامه شما و کلید خصوصی را شامل باشد. می‌تواند بصورت اختیاری شامل زنجیره صادرکنندگان گواهینامه هم باشد.

passphrase string

Passphrase که با آن فایل local_cert کدگذاری گردیده است.

CN_match string

اسامی معمول را ما انتظار داریم. PHP تنها تعداد محدودی تطبیق انجام می‌دهد. اگر اسامی معمول تطبیق نداشتند این تلاش برای اتصال شکست خواهد خورد.

verify_depth integer

اگر زنجیره گواهینامه سنگین بود پایان بده.

Defaults to no verification.

ciphers string

فهرست رمزنگاری موجود را تعیین می‌نماید. قالب رشته توسط » ciphers(1) تعیین شده است.

بصورت پیشفرض DEFAULT.

capture_peer_cert boolean

اگر برابر با TRUE باشد یک گزینه متن peer_certificate شامل گواهینامه نقطه را خواهد ساخت.

capture_peer_cert_chain boolean

اگر برابر باTRUE باشد یک گزینه متن peer_certificate_chain شامل زنجیره گواهینامه ساخته خواهد شد.

SNI_enabled boolean

اگر برابر با TRUE باشد نام سرور مشخص خواهد شد. فعال کردن SNI امکان صدور چندین مجوز برای یک IP فراهم می‌کند.

SNI_server_name string

اگر تعیین شده باشد این مقداربه عنوان نام سرور در مشخص کننده نام سرور به کار خواهد رفت. اگر تعیین نشده باشد نام سرور بر اساس نام میزبان هنگام باز نمودن جریان استفاده خواهد شد.

Changelog

Version Description
5.3.2 SNI_enabled و SNI_server_name اضافه شد.
5.0.0 capture_peer_cert٬ capture_peer_chain و ciphers را اضافه نمود.

Notes

Note: بدلیل زیرساختار بودن ssl:// برای پوشاننده‌های https:// و ftps:// هر گزینه متن برای ssl:// در مورد https:// و ftps:// نیز صادق است.

Note: برای SNI (Server Name Indication) PHPباید به همراه OpenSSL 0.9.8j یا بالاتر کلامپایل شده باشد. از OPENSSL_TLSEXT_SERVER_NAME برای تعیین پشتیبانی از SNI استفاده کنید.

add a note add a note

User Contributed Notes 3 notes

up
1
Anonymous
5 months ago
If I read the UPGRADING file correctly, in PHP 5.6 the default value of verify_peer has changed.
up
0
borbas dot geri at gmail dot com
8 months ago
I used this for Apple Push Notification Service.
Passed in a local certificate filename `cert.pem` trough local_cert option.
Worked fine, when invoked the script directly.

But when I included/required the script from a different location, it stopped working, without any explicit error message.

Resolved by passed in the full path for the file `<FullPathTo>cert.pem`.
up
0
Botjan kufca
4 years ago
CN_match works contrary to intuitive thinking. I came across this when I was developing SSL server implemented in PHP. I stated (in code):

- do not allow self signed certs (works)
- verify peer certs against CA cert (works)
- verify the client's CN against CN_match (does not work), like this:

stream_context_set_option($context, 'ssl', 'CN_match', '*.example.org');

I presumed this would match any client with CN below .example.org domain.
Unfortunately this is NOT the case. The option above does not do that.

What it really does is this:
- it takes client's CN and compares it to CN_match
- IF CLIENT's CN CONTAINS AN ASTERISK like *.example.org, then it is matched against CN_match in wildcard matching fashion

Examples to illustrate behaviour:
(CNM = server's CN_match)
(CCN = client's CN)

- CNM=host.example.org, CCN=host.example.org ---> OK
- CNM=host.example.org, CCN=*.example.org ---> OK
- CNM=.example.org, CCN=*.example.org ---> OK
- CNM=example.org, CCN=*.example.org ---> ERROR

- CNM=*.example.org, CCN=host.example.org ---> ERROR
- CNM=*.example.org, CCN=*.example.org ---> OK

According to PHP sources I believe that the same applies if you are trying to act as Client and the server contains a wildcard certificate. If you set CN_match to myserver.example.org and server presents itself with *.example.org, the connection is allowed.

Everything above applies to PHP version 5.2.12.
I will supply a patch to support CN_match starting with asterisk.
To Top