<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/openssl.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'openssl.installation.php',
    1 => 'Installation',
    2 => 'Installation',
  ),
  'up' => 
  array (
    0 => 'openssl.setup.php',
    1 => 'Installation/Konfiguration',
  ),
  'prev' => 
  array (
    0 => 'openssl.requirements.php',
    1 => 'Anforderungen',
  ),
  'next' => 
  array (
    0 => 'openssl.configuration.php',
    1 => 'Laufzeit-Konfiguration',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/openssl/configure.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="openssl.installation" class="section">
 <h2 class="title">Installation</h2>
 <p class="para">
  Um OpenSSL mit PHP nutzen zu können, muss PHP mit der Option <strong class="option configure">--with-openssl</strong> kompiliert werden.
 </p>
 <p class="para">
  Die OpenSSL-Bibliothek stellt einige weitere Bedingungen, um zur Laufzeit
  korrekt funktionieren zu können. Insbesondere benötigt OpenSSL Zugang zu
  einer Quelle für zufällige oder pseudo-zufällige Zahlen. Auf Unix und
  Unix-ähnlichen Systemen bedeutet dies, dass OpenSSL Zugang zu
  <code class="literal">/dev/urandom</code> oder <code class="literal">/dev/random</code> haben
  muss.
 </p>
 <p class="para">
  Die Konfigurationsoption <strong class="option configure">--with-system-ciphers</strong>, die bewirkt,
  dass PHP statt einer voreingestellten Standardliste die Chiffreliste des
  Systems verwendet, steht zur Verfügung.
 </p>
 <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
  <strong>Hinweis für Win32-Benutzer</strong><br />
  <p class="para">
   Diese Erweiterung benötigt <abbr title="Dynamic Link Library">DLL</abbr>-Dateien.
die für Windows verfügbar seien müssen. Der <abbr title="Frequently Asked Questions">FAQ</abbr>-Eintrag
&quot;<a href="faq.installation.php#faq.installation.addtopath" class="link"> Wie füge ich unter Windows PATH mein
PHP-Verzeichnis hinzu?</a>&quot; gibt hierzu weitere Informationen. Obwohl ein
einfaches Kopieren der DLL-Dateien vom PHP-Verzeichnis in den Windows-Systemordner
auch funktioniert (weil der Systemordner immer im
<var class="envar">PATH</var> enthalten ist), ist dieses Vorgehen nicht empfehlenswert.
<em>Diese Erweiterung benötigt die folgenden Dateien im <var class="envar">PATH</var>:
</em>
   <var class="filename">libeay32.dll</var> oder, von OpenSLL 1.1 an,
   <var class="filename">libcrypto-*.dll</var>
  </p>
  <p class="para">
   Wenn Sie vorhaben, Funktionen zur Schlüsselerzeugung und zum Signieren von
   Zertifikaten zu verwenden, müssen Sie eine gültige Konfigurationsdatei für
   OpenSSL, <var class="filename">openssl.cnf</var>, installieren. Wir fügen der
   Win32-Binärdistribution eine Beispielkonfigurationsdatei bei, die Sie im
   Verzeichnis <var class="filename">extras/ssl</var> finden.
  </p>
  <p class="para">
   PHP verwendet folgende Logik, um die <var class="filename">openssl.cnf</var> zu
   finden:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Die Umgebungsvariable <code class="literal">OPENSSL_CONF</code> wird, falls
      gesetzt, als Pfad zur Konfigurationsdatei verwendet (den Dateinamen mit
      eingeschlossen).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Die Umgebungsvariable <code class="literal">SSLEAY_CONF</code> wird, falls
      gesetzt, als Pfad zur Konfigurationsdatei verwendet (den Dateinamen mit
      eingeschlossen).
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      PHP sucht die Datei <var class="filename">openssl.cnf</var> an dem Ort, der bei
      der Kompilierung der OpenSSL-DLL als Speicherort für Zertifikate
      angegeben wurde. Üblicherweise ist der Standard-Dateiname
      <var class="filename">C:\Program Files\Common Files\SSL\openssl.cnf</var> (x64)
      oder <var class="filename">C:\Program Files (x86)\Common
      Files\SSL\openssl.cnf</var> (x86) oder, vor PHP 7.4.0,
      <var class="filename">C:\usr\local\ssl\openssl.cnf</var>.
     </span>
    </li>
   </ul>
  </p>
  <span class="simpara">
   Bei der Installation müssen Sie entscheiden, ob Sie die Konfigurationsdatei
   in den Standardpfad installieren oder ob Sie sie an einem anderen Ort
   installieren und Umgebungsvariablen verwenden (möglicherweise auf Basis
   einzelner virtueller Hosts), um die Konfigurationsdatei zu finden. Bei
   Funktionen, die diese Konfigurationsdatei benötigen, ist es möglich, durch
   die Angabe des Parameters <code class="parameter">options</code> den Standardpfad
   zu dieser Datei in einem Skript zu überschreiben.
  </span>
  <div class="caution"><strong class="caution">Achtung</strong>
   <p class="simpara">
    Es ist sicherzustellen, dass es nicht-privilegierten Nutzern nicht erlaubt
    ist <var class="filename">openssl.cnf</var> zu ändern.
   </p>
  </div>
  <span class="simpara">
   Seit OpenSSL 3.0.0, das unter Windows ab PHP 8.2.0 standardmäßig verwendet
   wird, gelten mehrere Algorithmen als veraltet. Diese werden in der Regel
   nicht mehr verwendet, werden von der Kryptographie-Community als unsicher
   eingestuft oder ähnliches.
   Diese Algorithmen sind weiterhin über den Legacy-Provider
   (<var class="filename">extras/ssl/legacy.dll</var>) verfügbar, dessen Verwendung im
   Abschnitt
   <a href="https://docs.openssl.org/master/man5/config/#Provider-Configuration" class="link external">&raquo;&nbsp;Provider-Konfiguration</a>
   des OpenSSL-Handbuchs beschrieben wird.
  </span>
 </p></blockquote>

 <div class="simplesect">
  <h3 class="title">Changelog</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Version</th>
       <th>Beschreibung</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.4.0</td>
       <td>
        Die <strong class="option configure">--with-openssl</strong> akzeptiert kein
        Verzeichnis-Argument mehr. Stattdessen muss die pkg-config-Variable
        <var class="envar">PKG_CONFIG_PATH</var> auf das OpenSSL-Verzeichnis gesetzt
        werden, oder es müssen die Variablen <var class="envar">OPENSSL_LIBS</var> und
        <var class="envar">OPENSSL_CFLAGS</var> angegeben werden.
       </td>
      </tr>

      <tr>
       <td>7.4.0</td>
       <td>
        Der OpenSSL-Standard-Konfigurationspfad wurde von
        <var class="filename">C:\usr\local\ssl</var> zu <var class="filename">C:\Program
        Files\Common Files\SSL</var> bzw. <var class="filename">C:\Program Files
        (x86)\Common Files\SSL</var> geändert.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>

</div><?php manual_footer($setup); ?>