<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration56.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'migration56.openssl.php',
    1 => 'OpenSSL &Auml;nderungen in PHP 5.6.x',
    2 => 'OpenSSL &Auml;nderungen in PHP 5.6.x',
  ),
  'up' => 
  array (
    0 => 'migration56.php',
    1 => 'Migration von PHP 5.5.x auf PHP 5.6.x',
  ),
  'prev' => 
  array (
    0 => 'migration56.new-functions.php',
    1 => 'Neue Funktionen',
  ),
  'next' => 
  array (
    0 => 'migration56.extensions.php',
    1 => 'Sonstige &Auml;nderungen bei Extensions',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration56/openssl.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration56.openssl" class="sect1">
 <h2 class="title">OpenSSL Änderungen in PHP 5.6.x</h2>

 <div class="sect2" id="migration56.openssl.peer-verification">
  <h3 class="title">Streamwrapper verifizieren nun standardmäßig Zertifikate und Hostnamen bei Verwendung von SSL/TLS</h3>

  
   <p class="para">
    Alle verschlüsselten Clientstreams verifizieren nun standardmäßig den
    Kommunikationspartner. Standardmäßig wird dafür das Standard-CA-Bundle
    von OpenSSL zur Verifikation des Peer-Zertifikates herangezogen. In
    den meisten Fällen sind keine Änderungen notwendig, um mit Servern
    mit gültigen SSL-Zertifikaten zu kommunizieren, da Distributoren
    üblicherweise OpenSSL mit vertrauenswürdigen CA-Bundles konfigurieren.
   </p>

   <p class="para">
    Das Standard-CA-Bundle kann global durch eine Änderung der
    konfigurationseinstellungen openssl.cafile oder openssl.capath
    überschrieben werden, oder für einzelne Requests durch die
    Verwendung der Kontextoptionen
    <a href="context.ssl.php#context.ssl.cafile" class="link"><code class="parameter">cafile</code></a> oder
    <a href="context.ssl.php#context.ssl.capath" class="link"><code class="parameter">capath</code></a>.
   </p>

   <p class="para">
    Obwohl dies generell nicht empfehlenswert ist, kann die Verifikation
    der Peer-Zertifikate für einzelne Requests ausgeschaltet werden, indem
    die Kontextoption
    <a href="context.ssl.php#context.ssl.verify-peer" class="link"><code class="parameter">verify_peer</code></a>
    auf <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> gesetzt wird. Die Verifikation des Peer-Namen kann durch
    das Setzen von
    <code class="parameter">verify_peer_name</code>
    <a href="context.ssl.php#context.ssl.verify-peer-name" class="link"><code class="parameter">verify_peer_name</code></a>
    auf <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> ausgeschaltet werden.
   </p>

 </div>

 <div class="sect2" id="migration56.openssl.fingerprint">
  <h3 class="title">Fingerabdrücke von Zertifikaten</h3>

  <p class="para">
   Es wurde Unterstützung für das Auslesen und Verifizieren von Fingerabdrücken
   von Zertifikaten hinzugefügt. <span class="function"><a href="function.openssl-x509-fingerprint.php" class="function">openssl_x509_fingerprint()</a></span>
   kam hinzu, um den Fingerabdruck aus X.509-Zertifikaten auszulesen und zwei
   neue <a href="context.ssl.php" class="link">SSL Streamkontext</a>-Optionen wurden
   hinzugefügt: <code class="literal">capture_peer_cert</code> zum Auslesen des X.509-
   Zertifikats des Kommunikationspartners und <code class="literal">peer_fingerprint</code>
   zur Durchsetzung, dass das Zertifikat des Kommunikationspartners dem
   angegebenen Fingerabdruck entsprechen muss.
  </p>
 </div>

 <div class="sect2" id="migration56.openssl.ciphers">
  <h3 class="title">Aktualisierung der Standardchiffren</h3>

  <p class="para">
   Die von PHP verwendeten Standardchiffren wurden auf eine sicherere Liste
   aktualisiert, basierend auf den
   <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_Ciphersuite" class="link external">&raquo;&nbsp;Mozilla Chiffreempfehlungen</a>,
   mit zwei zusätzlichen Ausnahmen: anonyme Diffie-Hellman Chiffren und RC4.
  </p>

  <p class="para">
   Auf diese Liste kann mit der neuen Konstante
   <strong><code><a href="openssl.ciphers.php#constant.openssl-default-stream-ciphers">OPENSSL_DEFAULT_STREAM_CIPHERS</a></code></strong> zugegriffen und (wie in
   früheren PHP-Versionen) durch das Setzen der Kontextoption
   <a href="context.ssl.php#context.ssl.ciphers" class="link"><code class="parameter">ciphers</code></a>
   übersteuert werden.
  </p>
 </div>

 <div class="sect2" id="migration56.openssl.tls-compression">
  <h3 class="title">Komprimierung standardmäßig deaktiviert</h3>

  <p class="para">
   Komprimierung von SSL/TLS wurde standardmäßig deaktiviert, um die
   CRIME-Attacke zu umgehen. PHP 5.4.13 fügte die Kontextoption
   <a href="context.ssl.php#context.ssl.disable-compression" class="link"><code class="parameter">disable_compression</code></a>
   hinzu, um die Komprimierung zu deaktivieren. Dies ist nun standardmäßig
   auf <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> (d. h. Komprimierung deaktiviert) gesetzt.
  </p>
 </div>

 <div class="sect2" id="migration56.openssl.honor-cipher-order">
  <h3 class="title">Servern wird erlaubt, die Reihenfolge bevorzugter Chiffren festzulegen</h3>

  <p class="para">
   Die SSL Kontextoption <code class="parameter">honor_cipher_order</code> wurde
   hinzugefügt, um Servern von verschlüsselten Streams die Umgehung der
   BEAST-Schwachstelle zu ermöglichen, indem die Chiffren des Servers gegenüber
   denen des Clients bevorzugt werden.
  </p>
 </div>

 <div class="sect2" id="migration56.openssl.metadata">
  <h3 class="title">Zugriff auf ausgehandeltes Protokoll und Chiffre</h3>

  <p class="para">
   Auf das Protokoll und die Chiffre, die für einen verschlüsselten Stream
   ausgehandelt wurden, kann nun mittels
   <span class="function"><a href="function.stream-get-meta-data.php" class="function">stream_get_meta_data()</a></span> oder
   <span class="function"><a href="function.stream-context-get-options.php" class="function">stream_context_get_options()</a></span> zugegriffen werden, wenn
   die SSL-Kontextoption <code class="parameter">capture_session_meta</code> auf
   <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> gesetzt ist.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$ctx </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_context_create</span><span style="color: #007700">([</span><span style="color: #DD0000">'ssl' </span><span style="color: #007700">=&gt; [<br />    </span><span style="color: #DD0000">'capture_session_meta' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">TRUE<br /></span><span style="color: #007700">]]);<br /><br /></span><span style="color: #0000BB">$html </span><span style="color: #007700">= </span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">'https://google.com/'</span><span style="color: #007700">, </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">, </span><span style="color: #0000BB">$ctx</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$meta </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_context_get_options</span><span style="color: #007700">(</span><span style="color: #0000BB">$ctx</span><span style="color: #007700">)[</span><span style="color: #DD0000">'ssl'</span><span style="color: #007700">][</span><span style="color: #DD0000">'session_meta'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$meta</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <p class="para">Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(4) {
  [&quot;protocol&quot;]=&gt;
  string(5) &quot;TLSv1&quot;
  [&quot;cipher_name&quot;]=&gt;
  string(20) &quot;ECDHE-RSA-AES128-SHA&quot;
  [&quot;cipher_bits&quot;]=&gt;
  int(128)
  [&quot;cipher_version&quot;]=&gt;
  string(11) &quot;TLSv1/SSLv3&quot;
}
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.openssl.forward-secrecy">
  <h3 class="title">Neue Optionen für Perfect Forward Secrecy bei Servern für verschlüsselte Streams</h3>

  <p class="para">
   Verschlüsselte Clientstreams unterstützen Perfect Forward Secrecy bereits, da
   dies üblicherweise vom Server kontrolliert wird. Es muss nichts zusätzlich
   unternommen werden, um PFS bei verschlüsselten PHP-Server-Streams zu aktivieren,
   die Zertifikate verwenden, welche Perfect Forward Secrecy unterstützen. Es wurden
   jedoch einige neue SSL-Kontextoptionen hinzugefügt, welche mehr Kontrolle über
   PFS erlauben und eventuell auftretende Kompatibilitätsprobleme behandeln.
  </p>

  <dl>
   
    <dt><code class="parameter">ecdh_curve</code></dt>
    <dd>
     <p class="para">
      Diese Option erlaubt die Auswahl einer spezifischen Kurve für
      ECDH-Chiffren. Falls nicht angegeben, wird <code class="literal">prime256v1</code>
      verwendet.
     </p>
    </dd>
   
   
    <dt><code class="parameter">dh_param</code></dt>
    <dd>
     <p class="para">
      Pfad zu einer Datei, welche Parameter für den
      Diffie-Hellman-Schlüsselaustausch enthält, die beispielsweise
      durch folgenden Befehl erzeugt werden könnte:
     </p>
     <div class="example-contents">
<div class="shellcode"><pre class="shellcode">openssl dhparam -out /path/to/my/certs/dh-2048.pem 2048</pre>
</div>
     </div>

    </dd>
   
   
    <dt><code class="parameter">single_dh_use</code></dt>
    <dd>
     <p class="para">
      Ist dies auf <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> gesetzt, wird ein neues Schlüsselpaar erzeugt,
      wenn Diffie-Hellman-Parameter verwendet werden, wodurch sich die
      Forward Secrecy verbessert.
     </p>
    </dd>
   
   
    <dt><code class="parameter">single_ecdh_use</code></dt>
    <dd>
     <p class="para">
      Ist dies auf <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> gesetzt, wird immer ein neues Schlüsselpaar erzeugt,
      wenn ECDH-Chiffren ausgehandelt werden. Dies verbessert die
      Forward Secrecy.
     </p>
    </dd>
   
  </dl>
 </div>

 <div class="sect2" id="migration56.openssl.crypto-method">
  <h3 class="title">SSL/TLS Versionsauswahl</h3>

  <p class="para">
   Es ist nun möglich die spezifischen Versionen von SSL oder TLS mittels
   der SSL-Kontextoption <code class="parameter">crypto_method</code> oder durch
   die Angabe eines spezifischen Transportes bei der Erzeugung des
   Streamwrappers auszuwählen (beispielsweise durch den Aufruf von
   <span class="function"><a href="function.stream-socket-client.php" class="function">stream_socket_client()</a></span> oder
   <span class="function"><a href="function.stream-socket-server.php" class="function">stream_socket_server()</a></span>).
  </p>

  <p class="para">
   Die SSL-Kontextoption <code class="parameter">crypto_method</code> erwartet
   eine Bitmaske in der die erlaubten Protokolle aufgezählt sind.
   Der Parameter <code class="parameter">crypto_type</code> von
   <span class="function"><a href="function.stream-socket-enable-crypto.php" class="function">stream_socket_enable_crypto()</a></span> verhält sich genauso.
   
  </p>

  <table class="segmentedlist">
   <caption><strong>Ausgewählte Protokollversionen und zugehörige Optionen</strong></caption>
   <thead><tr><th>Protokoll(e)</th>
   <th>Client-Flag</th>
   <th>Server-Flag</th>
   <th>Transport</th>
   </tr></thead><tbody><tr class="seglistitem">
    <td class="seg">Beliebige Version von TLS oder SSL</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-any-client">STREAM_CRYPTO_METHOD_ANY_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-any-server">STREAM_CRYPTO_METHOD_ANY_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">ssl://</code></td>
   </tr>
   <tr class="seglistitem">
    <td class="seg">Beliebige TLS-Version</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tls-client">STREAM_CRYPTO_METHOD_TLS_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tls-server">STREAM_CRYPTO_METHOD_TLS_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">tls://</code></td>
   </tr>
   <tr class="seglistitem">
    <td class="seg">TLS 1.0</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-0-client">STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-0-server">STREAM_CRYPTO_METHOD_TLSv1_0_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">tlsv1.0://</code></td>
   </tr>
   <tr class="seglistitem">
    <td class="seg">TLS 1.1</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-1-client">STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-1-server">STREAM_CRYPTO_METHOD_TLSv1_1_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">tlsv1.1://</code></td>
   </tr>
   <tr class="seglistitem">
    <td class="seg">TLS 1.2</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-2-client">STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-tlsv1-2-server">STREAM_CRYPTO_METHOD_TLSv1_2_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">tlsv1.2://</code></td>
   </tr>
   <tr class="seglistitem">
    <td class="seg">SSL 3</td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-sslv3-client">STREAM_CRYPTO_METHOD_SSLv3_CLIENT</a></code></strong></td>
    <td class="seg"><strong><code><a href="stream.constants.php#constant.stream-crypto-method-sslv3-server">STREAM_CRYPTO_METHOD_SSLv3_SERVER</a></code></strong></td>
    <td class="seg"><code class="literal">sslv3://</code></td>
   </tr>
  </tbody></table>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// Voraussetzen von TLS 1.0 oder neuer bei Verwendung von<br />// file_get_contents():<br /></span><span style="color: #0000BB">$ctx </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_context_create</span><span style="color: #007700">([<br />    </span><span style="color: #DD0000">'ssl' </span><span style="color: #007700">=&gt; [<br />        </span><span style="color: #DD0000">'crypto_method' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">STREAM_CRYPTO_METHOD_TLS_CLIENT</span><span style="color: #007700">,<br />    ],<br />]);<br /></span><span style="color: #0000BB">$html </span><span style="color: #007700">= </span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">'https://google.com/'</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">, </span><span style="color: #0000BB">$ctx</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// TLS 1.1 oder 1.2 voraussetzen:<br /></span><span style="color: #0000BB">$ctx </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_context_create</span><span style="color: #007700">([<br />    </span><span style="color: #DD0000">'ssl' </span><span style="color: #007700">=&gt; [<br />        </span><span style="color: #DD0000">'crypto_method' </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT </span><span style="color: #007700">|<br />                           </span><span style="color: #0000BB">STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT</span><span style="color: #007700">,<br />    ],<br />]);<br /></span><span style="color: #0000BB">$html </span><span style="color: #007700">= </span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">'https://google.com/'</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">, </span><span style="color: #0000BB">$ctx</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Verbindung mittels tlsv1.2:// Stream-Socket-Transport.<br /></span><span style="color: #0000BB">$sock </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_socket_client</span><span style="color: #007700">(</span><span style="color: #DD0000">'tlsv1.2://google.com:443/'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </div>

 <div class="sect2" id="migration56.openssl.default-certificate-paths">
  <h3 class="title"><span class="function"><a href="function.openssl-get-cert-locations.php" class="function">openssl_get_cert_locations()</a></span> hinzugefügt</h3>

  <p class="para">
   Die Funktion <span class="function"><a href="function.openssl-get-cert-locations.php" class="function">openssl_get_cert_locations()</a></span> wurde
   hinzugefügt: Sie gibt den Standard-Ablageort aus, der von PHP bei der
   Suche von CA-Bundles verwendet wird.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">openssl_get_cert_locations</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <p class="para">Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p>
   <div class="example-contents screen">
<div class="cdata"><pre>
array(8) {
  [&quot;default_cert_file&quot;]=&gt;
  string(21) &quot;/etc/pki/tls/cert.pem&quot;
  [&quot;default_cert_file_env&quot;]=&gt;
  string(13) &quot;SSL_CERT_FILE&quot;
  [&quot;default_cert_dir&quot;]=&gt;
  string(18) &quot;/etc/pki/tls/certs&quot;
  [&quot;default_cert_dir_env&quot;]=&gt;
  string(12) &quot;SSL_CERT_DIR&quot;
  [&quot;default_private_dir&quot;]=&gt;
  string(20) &quot;/etc/pki/tls/private&quot;
  [&quot;default_default_cert_area&quot;]=&gt;
  string(12) &quot;/etc/pki/tls&quot;
  [&quot;ini_cafile&quot;]=&gt;
  string(0) &quot;&quot;
  [&quot;ini_capath&quot;]=&gt;
  string(0) &quot;&quot;
}
</pre></div>
   </div>
  </div>
 </div>

 <div class="sect2" id="migration56.openssl.spki">
  <h3 class="title">SPKI-Unterstützung</h3>

  <p class="para">
   Unterstützung für die Erzeugung, das Auslesen und das Verifizieren von
   Signed Public Key And Challenges wurde (SPKAC) wurde hinzugefügt.
   Die Funktionen <span class="function"><a href="function.openssl-spki-new.php" class="function">openssl_spki_new()</a></span>,
   <span class="function"><a href="function.openssl-spki-verify.php" class="function">openssl_spki_verify()</a></span>,
   <span class="function"><a href="function.openssl-spki-export-challenge.php" class="function">openssl_spki_export_challenge()</a></span> und
   <span class="function"><a href="function.openssl-spki-export.php" class="function">openssl_spki_export()</a></span> wurden hinzugefügt, welche
   die durch ein <code class="literal">KeyGen</code> HTML5-Element erzeugten SPKACs
   erzeugen, verifizieren oder den <abbr title="Privacy-Enhanced Mail">PEM</abbr> Public Key und
   zugehörige Challenge exportieren.
  </p>

  <dl>
   
    <dt><code class="parameter">openssl_spki_new</code></dt>
    <dd>
     <p class="para">
      Erzeugt ein neues SPKAC mit einem privaten Schlüssel, Challenge-String
      und Hashalgorithmus.
     </p>

     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$pkey </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">openssl_pkey_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'secret passphrase'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$spkac </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_spki_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'challenge string'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

      <p class="para">Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p>
      <div class="example-contents screen">
<div class="cdata"><pre>
SPKAC=MIIBXjCByDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3L0IfUijj7+A8CPC8EmhcdNoe5fUAog7OrBdhn7EkxFButUp40P7+LiYiygYG1TmoI/a5EgsLU3s9twEz3hmgY9mYIqb/rb+SF8qlD/K6KVyUORC7Wlz1Df4L8O3DuRGzx6/+3jIW6cPBpfgH1sVuYS1vDBsP/gMMIxwTsKJ4P0CAwEAARYkYjViMzYxMTktNjY5YS00ZDljLWEyYzctMGZjNGFhMjVlMmE2MA0GCSqGSIb3DQEBAwUAA4GBAF7hu0ifzmjonhAak2FhhBRsKFDzXdKIkrWxVNe8e0bZzMrWOxFM/rqBgeH3/gtOUDRS5Fnzyq425UsTYbjfiKzxGeCYCQJb1KJ2V5Ij/mIJHZr53WYEXHQTNMGR8RPm7IxwVXVSHIgAfXsXZ9IXNbFbcaLRiSTr9/N4U+MXUWL7
</pre></div>
      </div>
     </div>
    </dd>
   

   
    <dt><code class="parameter">openssl_spki_verify</code></dt>
    <dd>
     <p class="para">
      Verifiziert ein angegebenes SPKAC.
     </p>

     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$pkey </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">openssl_pkey_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'secret passphrase'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$spkac </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_spki_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'challenge string'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">openssl_spki_verify</span><span style="color: #007700">(</span><span style="color: #0000BB">$spkac</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </dd>
   

   
    <dt><code class="parameter">openssl_spki_export_challenge</code></dt>
    <dd>
     <p class="para">
      Exportiert eine zugehörige Challenge eines angegebenen SPKAC.
     </p>

     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$pkey </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">openssl_pkey_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'secret passphrase'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$spkac </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_spki_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'challenge string'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$challenge </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_spki_export_challenge</span><span style="color: #007700">(</span><span style="color: #0000BB">$spkac</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$challenge</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

      <p class="para">Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p>
      <div class="example-contents screen">
<div class="cdata"><pre>
challenge string
</pre></div>
      </div>
     </div>
    </dd>
   

   
    <dt><code class="parameter">openssl_spki_export</code></dt>
    <dd>
     <p class="para">
      Exportiert den <abbr title="Privacy-Enhanced Mail">PEM</abbr>-formatierten öffentlichen
      RSA-Schlüssel aus einer SPKAC.
     </p>

     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$pkey </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_pkey_new</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">openssl_pkey_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'secret passphrase'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$spkac </span><span style="color: #007700">= </span><span style="color: #0000BB">openssl_spki_new</span><span style="color: #007700">(</span><span style="color: #0000BB">$pkey</span><span style="color: #007700">, </span><span style="color: #DD0000">'challenge string'</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">openssl_spki_export</span><span style="color: #007700">(</span><span style="color: #0000BB">$spkac</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

      <p class="para">Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p>
      <div class="example-contents screen">
<div class="cdata"><pre>
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcvQh9SKOPv4DwI8LwSaFx02h7
l9QCiDs6sF2GfsSTEUG61SnjQ/v4uJiLKBgbVOagj9rkSCwtTez23ATPeGaBj2Zg
ipv+tv5IXyqUP8ropXJQ5ELtbXPUN/gvw7cO5EbPHr/7eMhbpw8Gl+AfWxW5hLW8
MGw/+AwwjHBOwong/QIDAQAB
-----END PUBLIC KEY-----
</pre></div>
      </div>
     </div>
    </dd>
   
  </dl>
 </div>
</div><?php manual_footer($setup); ?>