rfc:improved-tls-defaults

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rfc:improved-tls-defaults [2014/02/07 14:33] rdlowreyrfc:improved-tls-defaults [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
  
 ====== Improved TLS Defaults ====== ====== Improved TLS Defaults ======
-  * Version: 0.9+  * Version: 0.11
   * Date: 2014-01-28   * Date: 2014-01-28
-  * Author: Daniel Lowrey, rdlowrey@gmail.com +  * Author: Daniel Lowrey, rdlowrey@php.net 
-  * Status: Under Discussion+  * Status: Implemented
   * First Published at: http://wiki.php.net/rfc/improved-tls-defaults   * First Published at: http://wiki.php.net/rfc/improved-tls-defaults
-  * Minor Revision (v0.1 → v0.2): 2014-01-28 
-  * Major Revision (v0.2 → v0.3): 2014-01-29 
-  * Minor Revision (v0.3 → v0.4): 2014-01-30 
-  * Minor Revision (v0.4 → v0.5): 2014-01-30 
-  * Major Revision (v0.5 → v0.6): 2014-02-01 
-  * Minor Revision (v0.6 → v0.7): 2014-02-02 
-  * Minor Revision (v0.7 → v0.8): 2014-02-03 
-  * Minor Revision (v0.8 → v0.9): 2014-02-06 
  
 ===== Introduction ===== ===== Introduction =====
Line 43: Line 35:
   * [[https://wiki.php.net/rfc/improved-tls-defaults#tls_compression|Disable TLS compression by default]]   * [[https://wiki.php.net/rfc/improved-tls-defaults#tls_compression|Disable TLS compression by default]]
   * [[https://wiki.php.net/rfc/improved-tls-defaults#honor_cipher_order|Create "honor_cipher_order" context option]]   * [[https://wiki.php.net/rfc/improved-tls-defaults#honor_cipher_order|Create "honor_cipher_order" context option]]
-  * [[https://wiki.php.net/rfc/improved-tls-defaults#verify_depth|Set default "verify_depth" value]] 
   * [[https://wiki.php.net/rfc/improved-tls-defaults#expose_negotiated_values|Expose negotiated values]]   * [[https://wiki.php.net/rfc/improved-tls-defaults#expose_negotiated_values|Expose negotiated values]]
-  * [[https://wiki.php.net/rfc/improved-tls-defaults#forward_secrecy_for_servers|Forward secrecy for servers]]+  * [[https://wiki.php.net/rfc/improved-tls-defaults#server_forward_secrecy|Server forward secrecy]]
   * [[https://wiki.php.net/rfc/improved-tls-defaults#expose_default_cert_paths|Expose default cert paths]]   * [[https://wiki.php.net/rfc/improved-tls-defaults#expose_default_cert_paths|Expose default cert paths]]
-  * [[https://wiki.php.net/rfc/improved-tls-defaults#stream_wrapper_creep|Deprecate superfluous stream wrappers and allow protocol flags]]+  * [[https://wiki.php.net/rfc/improved-tls-defaults#stream_wrapper_creep|Allow fine-grained protocol selection flags]]
  
 ===== Default Ciphers ===== ===== Default Ciphers =====
  
-Currently all encrypted stream transports use the openssl ''DEFAULT'' cipher list unless munually+Currently all encrypted stream transports use the openssl ''DEFAULT'' cipher list unless manually
 specified by the user via a ''"ciphers"'' SSL context option. This behavior exposes unwitting users specified by the user via a ''"ciphers"'' SSL context option. This behavior exposes unwitting users
 to the possibility that very weak ciphers will be negotiated for SSL/TLS sessions. The use of such to the possibility that very weak ciphers will be negotiated for SSL/TLS sessions. The use of such
Line 75: Line 66:
 ''!ADH'' ''!ADH''
  
-  * Anonymous Diffie-Hellman ciphers disallowed as per [[http://www.ietf.org/rfc/rfc2246.txt|RFC2246 Section A.5]]+  * Anonymous Diffie-Hellman ciphers disallowed as per [[http://tools.ietf.org/html/rfc2246#appendix-A.5|RFC2246 Section A.5]]
  
 ''!RC4'' ''!RC4''
Line 171: Line 162:
  
 $context = stream_context_create(['ssl' => [ $context = stream_context_create(['ssl' => [
-    'honor_cipher_order=> TRUE+    "crypto_method"         => STREAM_CRYPTO_METHOD_TLS_SERVER, 
 +    "local_cert"            => "/path/to/my/server.pem", 
 +    "local_pk"              => "/path/to/my/private.key", 
 +    "honor_cipher_order   => TRUE
 ]]); ]]);
- +  
-$uri = 'https://www.bankofamerica.com/'+$socketFlags STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; 
-$html = file_get_contents($uriFALSE, $context);+$server = stream_socket_server('tls://127.0.0.1:443'$errno, $errstr$socketFlags, $context);
  
 ?> ?>
 </code> </code>
- 
- 
-===== Verify Depth ===== 
- 
-**Proposal** 
- 
-  * Use a default ''"verify_depth"'' value of 3 
- 
-**Logic** 
- 
-Users can control how deeply PHP should verify certificates before concluding that the peer's 
-certificate is invalid via the existing ''"verify_depth"'' context option. In these scenarios the 
-"depth" is the maximum allowed number of intermediate certificate issuers. So, for example, setting 
-''"verify_depth" => 0'' means that //only// self-signed client certificates would be accepted as 
-valid. By default PHP sets no limit on how deeply certificate chains can be verified. 
- 
-This proposal specifies a default ''"verify_depth"'' of 3 if not specified by the user. 
- 
-**Example** 
- 
-<code php> 
-<?php 
- 
-// New informational constant exposed to userland 
-var_dump(OPENSSL_DEFAULT_STREAM_VERIFY_DEPTH); // int(3) 
- 
-$context = stream_context_create(['ssl' => [ 
-    'verify_depth' => 10 // Override the default value 
-]]); 
- 
-$html = file_get_contents('https://www.bankofamerica.com/', FALSE, $context); 
- 
-?> 
-</code> 
- 
  
 ===== Expose Negotiated Values ===== ===== Expose Negotiated Values =====
Line 225: Line 184:
 Users may wish to access information regarding the negotiated protocol and/or cipher for a given Users may wish to access information regarding the negotiated protocol and/or cipher for a given
 encrypted session. The ''stream_get_meta_data()'' wrapper_data abstraction is avoided here to prevent encrypted session. The ''stream_get_meta_data()'' wrapper_data abstraction is avoided here to prevent
-conflicts with other wrappers (I'm looking at you, ''http'' wrapper). The context option approach +conflicts with other wrappers. The context option approach also remains consistent with the existing 
-also remains consistent with the existing ''capture_peer_cert'' and ''capture_peer_cert_chain'' boolean +''capture_peer_cert'' and ''capture_peer_cert_chain'' boolean context abstractions. When the new 
-context abstractions. When the new context option is truthy the ''['ssl']['session_meta']'' context +context option is truthy the ''['ssl']['session_meta']'' context option is populated with an 
-option is populated with an informational array as shown here:+informational array as shown here:
  
 **Example** **Example**
Line 256: Line 215:
 </code> </code>
  
-===== Forward Secrecy for Servers =====+===== Server Forward Secrecy =====
  
 **Proposal** **Proposal**
  
-Encrypted client streams already support [[http://en.wikipedia.org/wiki/Forward_secrecy|forward secrecy]] +Encrypted client streams already fully support [[http://en.wikipedia.org/wiki/Forward_secrecy|forward secrecy]] 
-as this functionality is largely implemented server-side. However, the patch proposed here makes it possible for +(PFS) as this functionality is largely implemented server-side. Servers currenty have some limited 
-encrypted PHP stream //servers// to also achieve (perfect) forward secrecy when negotiating cipher +support for PFS, however, the proposed patch adds several new context options for fine-grained control 
-suites that utilize ephemeral key agreements.+in servers negotiating cipher suites that utilize ephemeral key agreements
 + 
 +//NOTE:// Servers deploying certificates capable of PFS aren't required to take any additional action 
 +to achieve forward secrecy. The proposed context options simply allow fine-grained configuration and 
 +broader potential FS support/compatibility for older clients.
  
 **New Context Options** **New Context Options**
Line 306: Line 269:
  
 $context = stream_context_create(['ssl' => [ $context = stream_context_create(['ssl' => [
-    "crypto_method"         => STREAM_CRYPTO_METHOD_TLS_SERVER, 
     "local_cert"            => "/path/to/my/server.pem",     "local_cert"            => "/path/to/my/server.pem",
     "local_pk"              => "/path/to/my/private.key",     "local_pk"              => "/path/to/my/private.key",
Line 321: Line 283:
 stream_set_blocking($server, FALSE); stream_set_blocking($server, FALSE);
  
-// stream_socket_enable_crypto() is used when client sockets are accepted+// stream_socket_enable_crypto() is used after client sockets are accepted
 // to enable crypto in a non-blocking way ... // to enable crypto in a non-blocking way ...
 +
 +stream_socket_enable_crypto($client, $enable = TRUE, STREAM_CRYPTO_METHOD_ANY_SERVER);
  
 ?> ?>
Line 373: Line 337:
 Meanwhile, 5.6 has added the following new wrappers: Meanwhile, 5.6 has added the following new wrappers:
  
-  * ''tlsv1.0'' 
   * ''tlsv1.1''   * ''tlsv1.1''
   * ''tlsv1.2''   * ''tlsv1.2''
Line 408: Line 371:
  
   * Allow only one narrow protocol   * Allow only one narrow protocol
-  * Allow *ALLof the protocols, even if some do not provide the requisite level of security+  * Allow //ALL// of the protocols, even if some do not provide the requisite level of security
  
 While this paradigm negatively impacts client-side applications, its shortcomings are particularly While this paradigm negatively impacts client-side applications, its shortcomings are particularly
Line 418: Line 381:
  
   * Internally re-value the existing ''STREAM_CRYPTO_METHOD_*'' constants to allow the assignment of crypto methods using bitwise flags instead of values. Users may specify any combination of these constants to control the allowed protocols for a given client or server stream. Meanwhile, the ''"crypto_method"'' context option already included as part of 5.6 allows all code to specify exactly which methods are appropriate for a given operation.   * Internally re-value the existing ''STREAM_CRYPTO_METHOD_*'' constants to allow the assignment of crypto methods using bitwise flags instead of values. Users may specify any combination of these constants to control the allowed protocols for a given client or server stream. Meanwhile, the ''"crypto_method"'' context option already included as part of 5.6 allows all code to specify exactly which methods are appropriate for a given operation.
-  * Remove the new stream wrappers previously merged for inclusion in 5.6: +  * New ''tlsv1.0'' wrapper to represent the OpenSSL ''TLSv1_server_method()'' and ''TLSv1_client_method()'' API 
-        * ''tlsv1.0'' +  * Repurpose the ''tls'' wrapper to mean "Any TLS protocol (1, 1.1, 1.2)" instead of "only TLSv1"
-        * ''tlsv1.1'' +
-        * ''tlsv1.2'' +
-  * Deprecate the following stream wrappers in PHP 5.6 with removal (tentativelyscheduled for PHP 6: +
-        * ''sslv2'' +
-        * ''sslv3'' +
-        * ''tls'' +
- +
-**Logic** +
- +
-The main reason for reshuffling the stream wrappers is simplicity. Most users are unlikely to know +
-the difference between the various protocols much less which they should use. It's not difficult to +
-imagine a scenario in which a user reasons, //"If SSL is safe, SSLv2 and SSLv3 must be REALLY safe. +
-I should use those."// Such users are likely to have no idea what "tls" means and forego it completely +
-despite its standing as the most secure option. +
- +
-So the overarching goal in this change is two-fold: +
- +
-  * Keep users safe by default without preventing them from doing insecure things if they need to do so; +
-  * Eliminate the confusion of having many different wrappers for encrypted streams. By deprecating the superfluous stream wrappers we //simplify// the ecosystem at the same time we're actually //adding// new functionality (via customized flag protocol specification). +
- +
-The decision was made to retain ''ssl'' as the primary stream wrapper because the general developer +
-population is more familiar with what "SSL" means than "TLS." Encryption context options are also +
-specified using the ''"ssl"'' key so the choice remains consistent with the existing nomenclature. +
-Note again that these stream wrappers //are not// removed. Their use will trigger an +
-''E_DEPRECATED'' warning but they will continue to function as before. +
- +
-Note also that though the ''tls'' stream wrapper is officially deprecated it will now negotiate the +
-best available of the TLS1TLSv1.and TLSv1.2 protocols. Because ''ext/openssl'' did not support +
-TLSv1.1 and TLSv1.2 prior to PHP 5.6 this wrapper was previously only able to utilize TLSv1+
- +
-**BC Implications of Proposed Stream Wrapper Changes** +
- +
-//None.// +
- +
-The only implications for existing code are the ''E_DEPRECATED'' messages for the ''sslv2'', +
-''sslv3'' and ''tls'' stream wrappers. Note that //only// stream wrapper usages trigger deprecation +
-notices. This notice triggering has nothing to do with the underlying protocols; it only occurs when +
-using the wrappers made unnecessary by the introduction of protocol flags. Users are encouraged to +
-specify protocol flags in their stream contexts to avoid these deprecation notices.+
  
 **Existing Constant Re-Valuing** **Existing Constant Re-Valuing**
Line 475: Line 399:
  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT = (1 << 5 | 1), /* New in 5.6 */  STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT = (1 << 5 | 1), /* New in 5.6 */
  STREAM_CRYPTO_METHOD_TLS_CLIENT = ((1 << 3) | (1 << 4) | (1 << 5) | 1), /* Any TLS protocol */  STREAM_CRYPTO_METHOD_TLS_CLIENT = ((1 << 3) | (1 << 4) | (1 << 5) | 1), /* Any TLS protocol */
 + STREAM_CRYPTO_METHOD_ANY_CLIENT = ((1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | 1), /* Any protocol */
  STREAM_CRYPTO_METHOD_SSLv2_SERVER = (1 << 1),  STREAM_CRYPTO_METHOD_SSLv2_SERVER = (1 << 1),
  STREAM_CRYPTO_METHOD_SSLv3_SERVER = (1 << 2),  STREAM_CRYPTO_METHOD_SSLv3_SERVER = (1 << 2),
Line 482: Line 407:
  STREAM_CRYPTO_METHOD_TLSv1_2_SERVER = (1 << 5), /* New in 5.6 */  STREAM_CRYPTO_METHOD_TLSv1_2_SERVER = (1 << 5), /* New in 5.6 */
  STREAM_CRYPTO_METHOD_TLS_SERVER = ((1 << 3) | (1 << 4) | (1 << 5)) /* Any TLS protocol */  STREAM_CRYPTO_METHOD_TLS_SERVER = ((1 << 3) | (1 << 4) | (1 << 5)) /* Any TLS protocol */
 + STREAM_CRYPTO_METHOD_ANY_SERVER = ((1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5)), /* Any protocol */
 } php_stream_xport_crypt_method_t; } php_stream_xport_crypt_method_t;
 </code> </code>
Line 491: Line 417:
 legacy naming convention is a source of constant confusion for users not versed in the inner-workings legacy naming convention is a source of constant confusion for users not versed in the inner-workings
 of OpenSSL. Here we use the more natural connotation and translate ''SSLv23'' for our purposes to of OpenSSL. Here we use the more natural connotation and translate ''SSLv23'' for our purposes to
-mean "either SSLv2 or SSLv3."+mean "either SSLv2 or SSLv3." ''STREAM_CRYPTO_METHOD_ANY_CLIENT'' and ''STREAM_CRYPTO_METHOD_ANY_SERVER'' are added to 
 +represent //"any protocol we can support."//
  
 **Examples** **Examples**
Line 513: Line 440:
     'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT     'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT
 ]]); ]]);
-$html = file_get_contents('https://github.com', null, $context);+$html = file_get_contents('https://github.com', false, $context);
  
 ?> ?>
Line 523: Line 450:
 <?php <?php
  
-$allowedProtocols = STREAM_CRYPTO_METHOD_SSLv3_CLIENT  | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;+$allowedProtocols = STREAM_CRYPTO_METHOD_SSLv3_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
 $context = stream_context_create(['ssl' => [ $context = stream_context_create(['ssl' => [
     'crypto_method' => $allowedProtocols     'crypto_method' => $allowedProtocols
Line 550: Line 477:
 </code> </code>
  
-Connect using the (deprecated) ''tls'' stream wrapper. The connection will negotiate the best +Connect using the ''tls'' stream wrapper. The connection will negotiate the best 
-available protocol of TLSv1, TLSv1.1, TLSv1.2. The stream is created successfully and an +available protocol of TLSv1, TLSv1.1, TLSv1.2:
-E_DEPRECATED error is triggered to encourage users to use the catch-all ''ssl'' wrapper:+
  
 <code php> <code php>
 <?php <?php
  
-// Triggers E_DEPRECATED, still works +$timeout = 42; 
-$sock stream_socket_client('tls://github.com:443');+$connFlags STREAM_CLIENT_CONNECT;
  
-?> +// Works as before 
-</code> +$sock = stream_socket_client('tls://github.com:443', $errno, $errstr, $timeout, $connFlags, $context);
- +
-The //only// wrapper for which the "crypto_method" flags have any effect is ''ssl''. Assigning this +
-context option for the deprecated wrappers has no effect: +
- +
-<code php> +
-<?php+
  
 +// Negotiates SSLv3, TLSv1.1 or TLSv1.2 because tls:// default is overridden by the context
 $context = stream_context_create(['ssl' => [ $context = stream_context_create(['ssl' => [
-    'crypto_method' => STREAM_CRYPTO_METHOD_SSLv3_CLIENT // <-- Won't work; you're stuck with TLS.+    'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_SSLv3_CLIENT
 ]]); ]]);
- +$sock = stream_socket_client('tls://github.com:443', $errno, $errstr, $timeout, $connFlags, $context);
-// Triggers E_DEPRECATED, still works +
-$sock = stream_socket_client('tls://github.com:443');+
  
 ?> ?>
 </code> </code>
  
-There is no need to use the deprecated wrappers as the ''ssl'' wrapper automatically negotiates +Enable crypto on an existing streamPreviously only a single value constant could be used at 
-the best available protocolHowever, for the sake of completeness, note that the following still +parameter 3. Flags are now accepted as shown here:
-works:+
  
 <code php> <code php>
 <?php <?php
  
-$sock stream_socket_client('sslv3://github.com:443'); // Triggers E_DEPRECATED, still works+$cryptoMethod STREAM_CRYPTO_METHOD_TLSv1_1_SERVER | STREAM_CRYPTO_METHOD_TLSv1_2_SERVER; 
 +stream_socket_enable_crypto($stream , $enable = TRUE, $cryptoMethod);
  
 ?> ?>
 </code> </code>
  
-Enable crypto on an existing stream. Previously only a single value constant could be used at +Encrypt an existing stream choosing from any protocol we can possibly support using the new catch-all 
-parameter 3Flags are now accepted as shown here:+''STREAM_CRYPTO_METHOD_ANY_CLIENT'' constant. This method will try all possible protocols:
  
 <code php> <code php>
 <?php <?php
  
-$cryptoMethod STREAM_CRYPTO_METHOD_TLSv1_1_SERVER | STREAM_CRYPTO_METHOD_TLSv1_2_SERVER+$sock stream_socket_client('tcp://github.com:443')
-stream_socket_enable_crypto($stream $enable = TRUE, $cryptoMethod);+var_dump($sock); // resource(%d) of type (stream
 +var_dump(stream_socket_enable_crypto($sock, TRUE, STREAM_CRYPTO_METHOD_ANY_CLIENT));
  
 ?> ?>
Line 606: Line 526:
 ===== TL;DR Definitive Progress ===== ===== TL;DR Definitive Progress =====
  
-**Requirements for a secure transfer prior to PHP 5.6:**+**Forward Secrecy** 
 + 
 +Encrypted stream servers support improved forward secrecy using ephemeral key exchange via RSA, DH 
 +and elliptic curve DH. No additional action is required for servers deploying certificates capable 
 +of ephemeral key exchange; new context options for fine-grained configuration are available. 
 + 
 +**Requirements for a secure client transfer prior to PHP 5.6:**
  
 Note that this is still insufficient as SAN x509 extension matching is unavailable prior to 5.6. Note that this is still insufficient as SAN x509 extension matching is unavailable prior to 5.6.
Line 618: Line 544:
         'cafile' => 'DO USERS KNOW WHAT TO PUT HERE? NO.',         'cafile' => 'DO USERS KNOW WHAT TO PUT HERE? NO.',
         'CN_match' => 'somesite.com',         'CN_match' => 'somesite.com',
-        'verify_depth' => 3, 
         'disable_compression' => true,         'disable_compression' => true,
         'SNI_enabled' => true,         'SNI_enabled' => true,
Line 629: Line 554:
 </code> </code>
  
-**Requirements for a secure transfer in 5.6 without this proposal:**+**Requirements for a secure client transfer in 5.6 without this proposal:**
  
 <code php> <code php>
Line 636: Line 561:
     'ssl' => array(     'ssl' => array(
         'ciphers' => 'DO USERS KNOW WHAT TO PUT HERE? NO.',         'ciphers' => 'DO USERS KNOW WHAT TO PUT HERE? NO.',
-        'verify_depth' => 3, 
         'disable_compression' => true         'disable_compression' => true
     )     )
Line 646: Line 570:
  
  
-**Requirements for a secure transfer in 5.6 if this RFC passes:**+**Requirements for a secure client transfer in 5.6 if this RFC passes:**
  
 Users are encouraged to merge the provided patch and view the HTML returned in the following code Users are encouraged to merge the provided patch and view the HTML returned in the following code
Line 657: Line 581:
 </code> </code>
  
 +
 +===== Removed Features Originally Planned for 5.6 =====
 +
 +Originally this RFC proposed the deprecation and future remove of the protocol-specific wrappers.
 +This recommendation was removed to retain the ability for streams without access to a stream context
 +to interface with protocol-specific clients and servers. In particular, the ''fsockopen'' function
 +cannot accept a stream context. As a result, removing protocol-specific stream wrappers would render
 +''fsockopen'' unusable for encrypted transfers with parties not using broadly compatible handshake
 +hello methods.
  
 ===== Backward Incompatible Changes ===== ===== Backward Incompatible Changes =====
  
-Most existing code is expected work without any BC implications. The only source of potential breakage +Most existing code is expected to work without any BC implications. The only source of potential breakage 
-involves the scenario where users connect to servers employing outdated/insecure encryption technologies. +involves the scenario where users connect to servers employing seriously outdated/insecure encryption 
-For these users the option always exists to manually override secure defaults with insecure settings +technologies. For these users the option always exists to manually override secure defaults with 
-in the stream context.+insecure settings in the stream context.
  
 ===== Proposed PHP Version ===== ===== Proposed PHP Version =====
Line 673: Line 606:
 ''OPENSSL_DEFAULT_STREAM_CIPHERS'' ''OPENSSL_DEFAULT_STREAM_CIPHERS''
  
-Provides userland access to the default cipher list used for stream encryption+Provides userland access to the default cipher list used for stream encryption.
  
-''OPENSSL_DEFAULT_STREAM_VERIFY_DEPTH''+''STREAM_CRYPTO_METHOD_ANY_CLIENT''
  
-Provides userland access to the default verify depth used for stream encryption+Crypto method interpreted as "any client crypto method we can possibly support." Applications may 
 +use this method for maximum compatibility with SSLv2, SSLv3, TLSv1, TLSv1.1 and TLSv1.2 servers. 
 + 
 +''STREAM_CRYPTO_METHOD_ANY_SERVER'' 
 + 
 +Crypto method interpreted as "any server crypto method we can possibly support." Applications may 
 +use this method for maximum compatibility with SSLv2, SSLv3, TLSv1, TLSv1.1 and TLSv1.2 clients.
  
 ''STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT'' ''STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT''
  
-Flag allowing specific TLSv1 usage in encrypted client streams+Crypto method flag allowing specific TLSv1 usage in encrypted client streams.
  
 ''STREAM_CRYPTO_METHOD_TLSv1_0_SERVER'' ''STREAM_CRYPTO_METHOD_TLSv1_0_SERVER''
  
-Flag allowing specific TLSv1 usage in encrypted server streams +Crypto method flag allowing specific TLSv1 usage in encrypted server streams.
- +
-===== Open Issues ===== +
- +
-  * Feedback?+
  
 ===== Proposed Voting Choices ===== ===== Proposed Voting Choices =====
Line 695: Line 630:
   * Should PHP implement the recommendations in this proposal as part of 5.6?   * Should PHP implement the recommendations in this proposal as part of 5.6?
  
-===== Patches and Tests =====+https://github.com/php/php-src/pull/593
  
-The linked patch is ready to merge against PHP-5.6 and includes several .phpt tests:+===== Vote =====
  
-https://gist.github.com/rdlowrey/2b3895db9329582d37f6+Voting period: //2014/02/11 - 2014/02/19//
  
-===== Implementation =====+Note that the minor revisions in v0.10 of this RFC were introduced soon after the initial vote 
 +announcement (in response to feedback). The changes are cosmetic in relation to the main elements 
 +of the RFC. They are noted here to avoid confusion.
  
-TBD+<doodle title="Should the proposed TLS changes be merged for 5.6?" auth="rdlowrey" voteType="single" closed="true"> 
 +   * Yes 
 +   * No 
 +</doodle>
  
-===== Vote =====+Thanks for your time :)
  
-//Voting will begin on Feb. 11// 
  
-===== Rejected Features ===== 
  
-TBD+== Revisions ==
  
 +v0.11 Updated constant names, protocol-specific stream wrappers no longer deprecated
  
- +v0.10 Removed default verify depth setting; tls wrapper no longer deprecated
-== Revisions ==+
  
 v0.9  Added server forward secrecy, updated default cipher list v0.9  Added server forward secrecy, updated default cipher list
rfc/improved-tls-defaults.1391783616.txt.gz · Last modified: 2017/09/22 13:28 (external edit)