<?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 => 'ja',
  ),
  'this' => 
  array (
    0 => 'openssl.installation.php',
    1 => 'インストール手順',
    2 => 'インストール手順',
  ),
  'up' => 
  array (
    0 => 'openssl.setup.php',
    1 => 'インストール/設定',
  ),
  'prev' => 
  array (
    0 => 'openssl.requirements.php',
    1 => '要件',
  ),
  'next' => 
  array (
    0 => 'openssl.configuration.php',
    1 => '実行時設定',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    '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">インストール手順</h2>
 <p class="para">
  PHP の OpenSSL サポートを使用するには、<strong class="option configure">--with-openssl</strong> を指定して PHP を
  コンパイルする必要があります。
 </p>
 <p class="para">
  OpenSSL ライブラリを動作させるためには、実行時にさらに必要なものがあります。
  特に、OpenSSL から乱数 (あるいは疑似乱数) 生成器にアクセスできなければなりません。
  たいていの Unix および Unix 系のプラットフォーム (Linux など) の場合、
  <code class="literal">/dev/urandom</code> あるいは
  <code class="literal">/dev/random</code> デバイスがこれにあたります。
 </p>
 <p class="para">
  configure オプション
  <strong class="option configure">--with-system-ciphers</strong> が利用できます。
  これにより、PHP がハードコードされたデフォルトではなく、システムが持つ暗号リストを使うようになります。
 </p>
 <blockquote class="note"><p><strong class="note">注意</strong>: 
  <strong>Win32 ユーザーへの注意</strong><br />
  <p class="para">
   この拡張モジュールを動作させるには、
Windows システムの <var class="envar">PATH</var> が通った場所に
<abbr title="Dynamic Link Library">DLL</abbr> ファイルが存在する必要があります。
<abbr title="Frequently Asked Questions">FAQ</abbr> の &quot;<a href="faq.installation.php#faq.installation.addtopath" class="link">Windows で PHP のディレクトリを
PATH に追加するにはどうすればいいのですか?</a>&quot; で、その方法を説明しています。
DLL ファイルを PHP のフォルダから Windows のシステムディレクトリにコピーしても動作します
(システムディレクトリは、デフォルトで <var class="envar">PATH</var>
に含まれるからです) が、これは推奨しません。
<em>この拡張モジュールを使用するには、以下のファイルが
<var class="envar">PATH</var> の通った場所にある必要があります。</em> 
   <var class="filename">libeay32.dll</var>,
   または、OpenSSL 1.1 以降では <var class="filename">libcrypto-*.dll</var>
  </p>
  <p class="para">
   加えてキー生成およびサイン認証関数を使用する計画がある場合、
   システムに 有効な <var class="filename">openssl.cnf</var> をインストールする
   必要があります。
   Win32 バイナリ配布版にサンプル設定ファイルを同梱することにしました。
   <var class="filename">extras/ssl</var> ディレクトリにあります。
  </p>
  <p class="para">
   PHP は、
   以下のロジックにより <var class="filename">openssl.cnf</var> を探します。
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      環境変数 <code class="literal">OPENSSL_CONF</code> が設定された場合、
      設定ファイルの（ファイル名を含む）パスとして使用されます。
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      環境変数 <code class="literal">SSLEAY_CONF</code> が設定された場合、
      設定ファイルの（ファイル名を含む）パスとして使用されます。
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      ファイル <var class="filename">openssl.cnf</var> はデフォルトの認証エリアに
      あることが仮定され、openssl DLL がコンパイルされた時間で設定されます。
      これは通常、デフォルトのファイル名が
      <var class="filename">c:\usr\local\ssl\openssl.cnf</var> (x64の場合),
      または <var class="filename">C:\Program Files (x86)\Common Files\SSL\openssl.cnf</var> (x86の場合),
      PHP 7.4.0 より前のバージョンでは <var class="filename">C:\usr\local\ssl\openssl.cnf</var>
      であることを意味します。
     </span>
    </li>
   </ul>
  </p>
  <span class="simpara">
   インストール時に、設定ファイルを
   デフォルトのパス または
   他の場所にインストールし、(例えば仮想ホスト毎に)環境変数に設定ファ
   イルの場所を指定するかを選ぶ必要があります。
   設定ファイルを必要とする関数の <code class="parameter">options</code> に
   より、デフォルトのパスを上書きすることが可能であることに注意してください。
  </span>
  <div class="caution"><strong class="caution">警告</strong>
   <p class="simpara">
    権限がないユーザーに
    <var class="filename">openssl.cnf</var> を変更させないようにしてください。
   </p>
  </div>
  <span class="simpara">
   Windows 版の PHP 8.2.0 以降でデフォルトとなっている OpenSSL 3.0.0 以降、
   いくつかのアルゴリズムがレガシーとみなされるようになっています。
   そうしたアルゴリズムは、暗号のコミュニティは使わなくなってきており、
   かつセキュアでないと見なされてきているものです。
   これらのアルゴリズムはレガシープロバイダ
   (<var class="filename">extras/ssl/legacy.dll</var>)
   で利用できます。その使い方は OpenSSL マニュアルの
   <a href="https://docs.openssl.org/master/man5/config/#Provider-Configuration" class="link external">&raquo;&nbsp;provider configuration</a> で説明されています。
  </span>
 </p></blockquote>

 <div class="simplesect">
  <h3 class="title">変更履歴</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>バージョン</th>
       <th>説明</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.4.0</td>
       <td>
        <strong class="option configure">--with-openssl[=DIR]</strong>
        は、ディレクトリ名を引数として受け入れなくなりました。
        代わりに、pkg-config の変数 <var class="envar">PKG_CONFIG_PATH</var>
        を OpenSSL のインストールパスに設定するか、
        環境変数 <var class="envar">OPENSSL_LIBS</var> と
        <var class="envar">OPENSSL_CFLAGS</var> を設定するようにしてください。
       </td>
      </tr>

      <tr>
       <td>7.4.0</td>
       <td>
        OpenSSL のデフォルトの設定ファイルのパスが
        <var class="filename">C:\usr\local\ssl</var> から
        <var class="filename">C:\Program Files\Common Files\SSL</var> と
        <var class="filename">C:\Program Files (x86)\Common Files\SSL</var> にそれぞれ変更されました。
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>

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