1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="context.ssl" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" annotations="verify_info:false" role="stream_context_option">
<refnamediv>
<refname>SSL context options</refname>
<refpurpose>SSL context option listing</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<para>
Context options for <literal>ssl://</literal> and <literal>tls://</literal>
transports.
</para>
</refsect1>
<refsect1 role="options"><!-- {{{ -->
&reftitle.options;
<para>
<variablelist>
<varlistentry xml:id="context.ssl.peer-name">
<term>
<parameter>peer_name</parameter>
<type>string</type>
</term>
<listitem>
<para>
Peer name to be used. If this value is not set, then the name is guessed
based on the hostname used when opening the stream.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.verify-peer">
<term>
<parameter>verify_peer</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Require verification of SSL certificate used.
</para>
<para>
Defaults to &true;.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.verify-peer-name">
<term>
<parameter>verify_peer_name</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Require verification of peer name.
</para>
<para>
Defaults to &true;.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.allow-self-signed">
<term>
<parameter>allow_self_signed</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Allow self-signed certificates. Requires
<link linkend="context.ssl.verify-peer"><parameter>verify_peer</parameter></link>.
</para>
<para>
Defaults to &false;
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.cafile">
<term>
<parameter>cafile</parameter>
<type>string</type>
</term>
<listitem>
<para>
Location of Certificate Authority file on local filesystem
which should be used with the <literal>verify_peer</literal>
context option to authenticate the identity of the remote peer.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.capath">
<term>
<parameter>capath</parameter>
<type>string</type>
</term>
<listitem>
<para>
If <literal>cafile</literal> is not specified or if the certificate
is not found there, the directory pointed to by <literal>capath</literal>
is searched for a suitable certificate. <literal>capath</literal>
must be a correctly hashed certificate directory.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.local-cert">
<term>
<parameter>local_cert</parameter>
<type>string</type>
</term>
<listitem>
<para>
Path to local certificate file on filesystem. It must be a
<acronym>PEM</acronym> encoded file which contains your certificate and
private key. It can optionally contain the certificate chain of issuers.
The private key also may be contained in a separate file specified
by <literal>local_pk</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.local-pk">
<term>
<parameter>local_pk</parameter>
<type>string</type>
</term>
<listitem>
<para>
Path to local private key file on filesystem in case of separate
files for certificate (<literal>local_cert</literal>) and private key.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.passphrase">
<term>
<parameter>passphrase</parameter>
<type>string</type>
</term>
<listitem>
<para>
Passphrase with which your <literal>local_cert</literal> file
was encoded.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.verify-depth">
<term>
<parameter>verify_depth</parameter>
<type>int</type>
</term>
<listitem>
<para>
Abort if the certificate chain is too deep.
</para>
<para>
Defaults to no verification.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.ciphers">
<term>
<parameter>ciphers</parameter>
<type>string</type>
</term>
<listitem>
<para>
Sets the list of available ciphers. The format of the string is described
in <link xlink:href="&url.openssl.ciphers;">ciphers(1)</link>.
</para>
<para>
Defaults to <literal>DEFAULT</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.capture-peer-cert">
<term>
<parameter>capture_peer_cert</parameter>
<type>bool</type>
</term>
<listitem>
<para>
If set to &true; a <literal>peer_certificate</literal> context option
will be created containing the peer certificate.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.capture-peer-cert-chain">
<term>
<parameter>capture_peer_cert_chain</parameter>
<type>bool</type>
</term>
<listitem>
<para>
If set to &true; a <literal>peer_certificate_chain</literal> context
option will be created containing the certificate chain.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.sni-enabled">
<term>
<parameter>SNI_enabled</parameter>
<type>bool</type>
</term>
<listitem>
<para>
If set to &true; server name indication will be enabled. Enabling SNI
allows multiple certificates on the same IP address.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.disable-compression">
<term>
<parameter>disable_compression</parameter>
<type>bool</type>
</term>
<listitem>
<para>
If set, disable TLS compression. This can help mitigate the CRIME attack
vector.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.peer-fingerprint">
<term>
<parameter>peer_fingerprint</parameter>
<type>string</type> | <type>array</type>
</term>
<listitem>
<para>
Aborts when the remote certificate digest doesn't match the specified
hash.
</para>
<para>
When a <type>string</type> is used, the length will determine which hashing algorithm
is applied, either "md5" (32) or "sha1" (40).
</para>
<para>
When an <type>array</type> is used, the keys indicate the hashing algorithm name
and each corresponding value is the expected digest.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="context.ssl.security-level">
<term>
<parameter>security_level</parameter>
<type>int</type>
</term>
<listitem>
<para>
Sets the security level. If not specified the library default security level is used.
The security levels are described in
<link xlink:href="&url.openssl.security-level;">SSL_CTX_get_security_level(3)</link>.
</para>
<para>
Available as of PHP 7.2.0 and OpenSSL 1.1.0.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1><!-- }}} -->
<refsect1 role="changelog"><!-- {{{ -->
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.2.0</entry>
<entry>
Added <parameter>security_level</parameter>. Requires OpenSSL >= 1.1.0.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1><!-- }}} -->
<refsect1 role="notes">
&reftitle.notes;
<note>
<simpara>
Because <literal>ssl://</literal> is the underlying transport for the
<link linkend="wrappers.http"><literal>https://</literal></link> and
<link linkend="wrappers.ftp"><literal>ftps://</literal></link> wrappers,
any context options which apply to <literal>ssl://</literal> also apply to
<literal>https://</literal> and <literal>ftps://</literal>.
</simpara>
</note>
<note>
<simpara>
For SNI (Server Name Indication) to be available, then PHP must be compiled
with OpenSSL 0.9.8j or greater. Use the
<constant>OPENSSL_TLSEXT_SERVER_NAME</constant> to determine whether SNI is
supported.
</simpara>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><xref linkend="context.socket" /></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|