カテゴリー
Windows

Windows7上にWamp系WebServerを建てる-#3。

The same article in English

 承前

MySQL 5.6 のインストール

  1. mysql-5.6.12-win32.zip をダウンロードする。
  2. Zip を展開する。
  3. Drive_SV (この間サーバソフト用に作ったドライブのこと) に ディレクトリ MySQL を作る。下記のディレクトリとファイルを MySQL にインストールする。我が家の場合,はずしたものはリモートでは使わないから,余計なものはサーバに置かないというポリシーで,こうしているだけなので,展開してできたものをすべてインストールしてもかまわない。
    • ディレクトリ
        bin
        data
        include
        lib  
        share
    • ファイル
        COPYING
        my.ini  <---   my-default.ini のまま,名前を変えただけのもの。
  4. さて, my.ini をカスタマイズする。 (Creating an Option File 参照。)
        # basedir = …..  —>  basedir = Drive_SV:/MySQL   (*) backslash() ではなく slash(/)。
        # datadir = …..  —>  datadir = Drive_SV:/MyDATA
    以下の一行を追加。
        explicit_defaults_for_timestamp = true
  5. data ディレクトリ (この時点では, Drive_SV:MySQLdata となっている。) を Drive_SV: に移動し, MyDATA にリネーム。
  6. cmd.exe を管理者として起動する。
    >Drive_SV:
    >cd Drive_SV:MySQLbin
    >mysqld --console    (Starting the Server for the First Time 参照。)

    2013-07-30 08:22:26 3484 [Note] Plugin ‘FEDERATED’ is disabled.
              ・                 ・
              ・                 ・
    2013-07-30 08:22:27 3484 [Warning] No existing UUID has been found, …………
              ・                 ・
              ・                 ・
    2013-07-30 08:22:27 3484 [Note] mysqld: ready for connections.
    Version: ‘5.6.12’ socket: ” port: 3306 MySQL Community Server (GPL)

    上記以外の error や warning が出るときは, my.ini をもう一度見直す。ここで,多分 Windoes Firewall から 3303 port についての アラートが来ると思うので,しっかり確認の後,許可。

    もうひとつ cmd.exe を管理者として起動し, mysqld を止める。
    >Drive_SV:
    >cd Drive_SV:MySQLbin
    >mysqladmin -u root shutdown

  7. cmd.exe を管理者として起動する。
    >Drive_SV:
    >cd Drive_SV:MySQLbin
    >mysqld.exe --install
  8. コントロールパネル >> 管理ツール >> サービス
    MySQL を選んで開始する。
    ‘スタートアップの種類’ が ‘自動’ になっていないときは, ‘自動’ に変更しておく。
  9. Drive_SV:MySQLbin に Path を通す。

    root のパスワードを変更。

    cmd.exe を管理者として起動する。
    >mysql -u root
    >SET PASSWORD FOR root@localhost=PASSWORD(‘password’);
    > quit

    ログインできるかチェックする。
    >mysql -u root -p
    Enter password: ************
    > quit

phpMyAdmin4 のインストール。

  1. phpMyAdmin-4.0.4.2-english.zip をダウンロードする。
    Zip を展開する。
  2. ディレクトリ phpMyAdmin-4.0.4.2-english を phpMyAdmin にリネーム。
    展開ファイルの中の config.sample.inc.php を削除する。
    doc, examples, setup の 3 ディレクトリを削除する。
    使用中の config.inc.php を phpMyAdmin の中にコピーする。 (まったくの新規導入の場合は, Quick Install を参照。)

    ディレクトリ phpMyAdmin を Drive_SV に移動する。

  3. phpMyAdmin.conf を Drive_SV:Apache24confextra の中に作成する。
    phpMyAdmin.conf の内容:
         Alias /phpMyAdmin “Drive_SV:/phpMyAdmin/”

         <Directory “Drive_SV:/phpMyAdmin”>
              Options None
              AllowOverride None
              Require ip Lan IP range.
         </Directory>
         <Directory “Drive_SV:/phpMyAdmin/libraries”>
              Require all denied
         </Directory>

    httpd.conf をカスタマイズする (場所:Apache24conf)。
    Supplemental configuration 区画の最後に下記の2行を加える。
         # phpMyAdmin settings
         Include conf/extra/phpMyAdmin.conf

  4. Apache をリスタートする。
    http://xxx.xxx.xxx.xxx/phpMyAdmin にアクセスする。

         Username: root
         Password: MySQL root のパスワード

    ここで,画面の下のほうに次のような警告が出る。
         The phpMyAdmin configuration storage is not completely configured,
        some extended features have been deactivated. To find out why click here.

    phpMyAdmin configuration storage の構築を完了するために,使用中の database phpmyadmin をインポートする (まったくの新規導入の場合は, phpMyAdmin configuration storage phpMyAdmin 環境保管領域を参照)。

  5. Log out 後 log in すると,警告は消えている。
  6. root@localhost 以外のユーザは削除する。

    WordPress 用の user(WP-User) と database(WPdatabase) を作っておく。
    WP-user には, Grant 以外のすべての Global privileges を与える。 WP-user には, Grant 以外の WPdatabase privileges は与えるが, Global privileges は一切与えないこと。 collation は utf8_general_ci にする。

  7. Log out。
カテゴリー
Windows

Windows7上にWamp系WebServerを建てる-#2。

The same article in English
投稿アップデート情報  追記(12/27)  追記2(2014/3/24)

 承前

ActivePerl のインストール。

  1. ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi をダウンロードする。
  2. ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi を Drive_SV (この間サーバソフト用に作ったドライブのこと) にデフォルトでインストールする。
  3. cmd.exe を起動する。
    >perl -v
    バージョン情報が返ってくれば, Perl に Path が通っている。
  4. printenv.pl (場所:Apache24cgi-bin) をの1行目を書き換える。
    #!D:/programs/perl/bin/perl.exe  —>  #!Drive_SV:/Perl/bin/perl.exe

    printenv.pl を Apache24cgi-bin から drive_DC:WEBcgi-bin に移動する。
    ブラウザから http://xxx.xxx.xxx.xxx/cgi-bin/printenv.pl にアクセスする。

    サーバ環境変数のリストが表示されれば,インストールは完了。

  5. printenv.pl を削除する。
  6. (*) エイリアスを切ってある cgi-bin 外で CGI scripts を使いたい場合は, AddHandler の設定が必要である。: (この場合, “Options” directive に “ExecCGI” の追記もいると思う。)

PHP5.5 のインストール。

  1. この間6月20日の日に,ついに PHP5.5 が出たが, 5.5 からは WindowsXP をサポートしないということで,使ってみたくても使えなかった。それは前からわかっていたことで,そのために CentOS の練習をしたりしたいたわけだが,今,目の前には, Windows7 の載った Xw4200 がある。ということで, php-5.5.1-Win32-VC11-x86.zip をダウンロード。相変わらず, Apache+Windows の構成だから, thread safe バージョンである。この辺については, PHP の install.txt に書いてあるので各自読んでいただきたい。
    Zip を展開する。
    ディレクトリ php-5.5.1-Win32-VC11-x86 を PHP にリネーム。
  2. php.ini-production を php.ini としてコピーし,カスタマイズする (場所:PHP)。
      デフォルト カスタム
    1 ;default_charset = "UTF-8" default_charset = "UTF-8"
    2 ; extension_dir = "ext" extension_dir = "Drive_SV:PHPext"
    3 allow_url_fopen = On allow_url_fopen = Off
    4 ;extension=php_curl.dll extension=php_curl.dll
    5 ;extension=php_gd2.dll extension=php_gd2.dll
    6 ;extension=php_mbstring.dll extension=php_mbstring.dll
    7 ;extension=php_mysql.dll extension=php_mysql.dll
    8 ;extension=php_mysqli.dll extension=php_mysqli.dll
    9 ;extension=php_openssl.dll extension=php_openssl.dll
    10 ;date.timezone = date.timezone ="Asia/Tokyo"
    11 ;sendmail_from = me@example.com sendmail_from = My email address
    12 ;mbstring.language = Japanese mbstring.language = Japanese
    13 ;mbstring.internal_encoding = UTF-8 mbstring.internal_encoding = UTF-8
    14 ;mbstring.http_input = UTF-8 mbstring.http_input = pass
    15 ;mbstring.http_output = pass mbstring.http_output = pass
    16 ;mbstring.encoding_translation = Off mbstring.encoding_translation = Off
    17 ;mbstring.detect_order = auto mbstring.detect_order = UTF-8,ASCII,SJIS,EUC-JP,JIS
    18 ;mbstring.substitute_character = none mbstring.substitute_character = none

    (*) 14-18 については,自鯖の環境の関係でこうしてあるので,デフォルトのままでも構わないはず。各自の環境で対処してください。

    セキュリティのため,以下の3つを変更した。 19 と 21 については,環境によっては,不具合が生じることがあるかもしれない(追記:12/27)。

      デフォルト カスタム
    19 output_buffering = 4096 output_buffering = Off
    20 expose_php = On expose_php = Off
    21 mysql.allow_persistent = On mysql.allow_persistent = Off
  3. ディレクトリ PHP を Drive_SV に移動する。
  4. php55.conf を Drive_SV:Apache24confextra に作成する。
    php55.conf の内容:
         LoadModule php5_module “Drive_SV:/PHP/php5apache2_4.dll”
         AddHandler application/x-httpd-php .php
         PHPIniDir “Drive_SV:/PHP”

    httpd.conf をカスタマイズ (場所:Apache24conf)。
         DirectoryIndex index.html  —>  DirectoryIndex index.php index.html
    さらに Supplemental configuration 区画の最後に下記の2行を加える。
         # PHP settings
         Include conf/extra/php55.conf

  5. test.php を drive_DC:WEBhtdocs に作成。
    test.php の内容:
         <?php phpinfo() ?>
  6. Apache をリスタートする。

    ブラウザで http://xxx.xxx.xxx.xxx/test.php にアクセスする。

    phpinfo リストが表示されれば,インストール完了。

  7. test.php を削除する。
  8. php.ini のカスタマイズ (場所:PHP)。
         ;disable_functions =  —>  disable_functions =”shell_exec, suexec, passthru, phpinfo”
  9. Apache をリスタートしておく。

追記2(2014/3/24):
 2013.12.27 から Opcache を使っている。 PHP スクリプト多用のサイト運営の場合は,そちらもどうぞ。「本家のお世話-#90。(Opcacheを使う)

カテゴリー
Windows

Windows7上にWamp系WebServerを建てる-#1。

The same article in English
投稿アップデート情報  追記(8/11)

 昨日書いたように, Windows7HP+SP1(x86) が載ったデスクトップを手にしたわけで,しめしめと,新 Wamp 系 WebServer の構築に取り掛かった。

 手始めに,ハードディスク上にパーティションを2つ切った。サーバ・ウェア用のドライブ (Drive_SV) と他のサイト用のファイルのドライブ (drive_DC) にするためだ。

 ところで,作業の間に何度か Windows ファイアーウォールからアラートが来ると思うが,その場合は,間違いなく必要であることを確認のうえ,「許可」すること。じゃ,始めます。

Apache のインストール。

  1. httpd-2.4.6-win32-VC11.zip (= Apache2.4.6)を落とす。
    この zip の場合, VC11 が必須なので,vcredist_x86.exe をダウンロードしてインストールする。
    zip を展開する。
  2. 展開ファイル内の httpd.conf をカスタマイズする (場所:Apache24conf)。
      デフォルト カスタム
    1 ServerRoot “c:/Apache24” ServerRoot “Drive_SV:/Apache24”
    2 ServerAdmin admin@example.com ServerAdmin 私のメールアドレス
    3 #ServerName www.example.com:80 ServerName local IP アドレス:80
    4 DocumentRoot “c:/Apache24/htdocs” DocumentRoot “drive_DC:/WEB/htdocs”
    5 <Directory “c:/Apache24/htdocs”> <Directory “drive_DC:/WEB/htdocs”>
    6 Options Indexes FollowSymLinks Options FollowSymLinks
    7 ErrorLog “logs/error.log” ErrorLog “|bin/rotatelogs.exe -l -f logs/error.%Y.%m.%d 86400”
    8 CustomLog “logs/access.log” common # CustomLog “logs/access.log” common
    9 #CustomLog “logs/access.log” combined CustomLog “|bin/rotatelogs.exe -l -f logs/access.%Y.%m.%d 86400” combined
    10 ScriptAlias /cgi-bin/ “c:/Apache24/cgi-bin/” ScriptAlias /cgi-bin/ “drive_DC:/WEB/cgi-bin/”
    11 <Directory “c:/Apache24/cgi-bin”> <Directory “drive_DC:/WEB/cgi-bin”>
    12 Require all granted Require ip Lan IP range (cgi-bin へのアクセス制限として)
    13   ServerTokens Prod
  3. Apache24 フォルダをそっくり Drive_SV に移動する。
  4. cmd.exe を管理者として起動。
    >cd Drive_SV:Apache24bin
    >httpd.exe -t
    この段階でエラーが出るようなら,先に進む前に,もう一度確認すること。

    サービスとして登録する。
    >httpd.exe -k install
    ApacheMonitor.exe ショートカットを Windows スタートアップの中に作り,Apache をスタート。

  5. index.html を Apache24/htdocs から drive_DC:WEBhtdocs に移動する。
    ブラウザから, http://localhost/ にアクセスする。
    “It works!” が帰ってくれば,インストールは完了。
  6. 先ほどの index.html を削除する。

追記(8/11):
 ここのところ, Apache のハングアップに悩まされていた。で,そのときのエラーメッセージが相変わらず,「(OS 64)指定されたネットワーク名は利用できません。 : AH00341: winnt_accept: Asynchronous AcceptEx failed.」。というわけで, httpd.conf に下記の行を加えてみた。(参照:AcceptFilter ディレクティブ)<--- 先に英語版を読んでから,それの日本語版へのリンクを貼ったが,肝心な点ついての情報量が大分違うことに今気づいたので,英語版へのリンクも貼っておきます。

   <IfModule mpm_winnt_module>
      AcceptFilter http none
      AcceptFilter https none
   </IfModule>

カテゴリー
Windows

本家のお世話-#71。(Apache 2.4.6へアップデート)

The same article in English

 Apache HTTP Server 2.4.6 が出た。 vhost のマッピングを破壊するということで,結局配布が取りやめになった 2.4.5 で終わっていたバグフィクスと, 2.4.5 での不具合の修正が行われているようだ。

 いつも通り, VC9 用の httpd-2.4.6-win32-VC9.zip (16 Jul) を我が家のサーバ用 (WindowsXP SP3 (x86)) に落とす。新 httpd.conf では以下の4行が追加されていた。
————————————————————————————————————————————————
   #LoadModule auth_form_module modules/mod_auth_form.so
   #LoadModule cache_socache_module modules/mod_cache_socache.so
   #LoadModule macro_module modules/mod_macro.so
   #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

カテゴリー
WordPress

覚え書-#13。

The same article in English

 忘れないように。

  1. Apache について
     httpd.conf に “ServerTokens” を入れるのを忘れてたので, “ServerTokens Prod” を追加。
  2. FireFox について
    “network.prefetch-next” という機能があるのだが,これのデフォが true 。なんか悪いものに感染したサイトを前もって,読み込まれるといやなので, false に変更。

    “plugins.click_to_play” についても, true に変更。

    まぁ,どっちも過剰防衛って気もするが,どちらについても, “about:config” から変更できる。 ha-ha。

  3. WordPress について
    WordPress 3.5.2 が出た。セキュリティリリースということらしい。 wordpress-3.5.2-ja.zip を落としてアップデート。前にも書いたが,アップデートページに日本語バージョンが表示されないので,自動でできない。多分,マルチサイトのデフォルト言語が英語になっているせいだと思う。とにかく,いつも手動アップデートになる。

    何事もなかったが, swfupload-all.js がなくなっているのに,気づいた。

    xrea の s370 と @pages の www39 でもアップデートしておいた。こちらも特に問題なし。ただし,いつものことながら, @pages の www39 では相変わらず,自動アップデートはできなかった。

    ついでに, phpMyAdmin も phpMyAdmin4.0.4 にした。

カテゴリー
WordPress

本家のお世話-#68。(WordPress SSL ログイン-#1)

The same article in English
投稿アップデート情報  追記(6/19)

 前に書いたが, WordPress のログインを自宅 LAN からのみ可にしていた。しばらく,これでやっていたが,やはり,不便。なので,この際,使っている WiFi 端末からログインできるようにしようと思うのだが, WordPress のパスワードを平文で流すのは日頃のポリシーに反する。で,サーバ (WindowsXP SP3 (x86)) 上で停止していた SSL 対応を復活してやろうと思い立った。もともと, Apache 2.4 win32 binaries は,Build with apr-1.4.6 apr-util-1.4.1 apr-iconv-1.2.1 openssl-1.0.1e zlib-1.2.7 pcre-8.32 libxml2-2.9.0 lua-5.1.5 expat-2.1.0 だし, WordPress のログインに私が使うだけなので,自前認証局を作成して Apache の mod_ssl を使えばいいかと思った。

 まずは,自前認証局のために, cakey.pem と cacert.pem を作る。普通, Windows 上では CA.pl を使うのだが, Apache 2.4 win32 binaries には CA.pl が入っていなかった。というわけで, openssl.exe をコマンドラインで使うことにする。どうやったらいいかは, the document page (魚拓です)にあった。

  1. サーバのどこかに自前認証局用のディレクトリ myCA を作成。 myCA の中には, private と newcerts の2つのディレクトリと,空の index.txt を作成しておく。実のところ, myCA はリムーバル・メディア上に作った。これだと,後で my_ca.crt と clientcert.p12 をクライアント用のパソコンに移動するのも簡単だし,自前認証局保管のためには,パソコンから切り離しておけば安全でもある。
  2. Apache conf ディレクトリに openssl.cnf がある。 WindowsXP だと, openssl.cnf は拡張子なしの openssl になっていて,しかもファイルタイプが “短縮ダイヤル” になっている。昔これで悩んだんだよねぇ。これを開けてカスタマイズする。 WindowsXP 上だと,セパレータを “/” から “” に変える作業をやっとかないと,下記のエラーが出る。 M$ の最近の cmd.exe だと “/” もちゃんと認識してくれるようだが, WinXP 上の cmd.exe ではダメ。さらに, はエスケープしておいてやらないといけないので, “” ということになる。

    Error opening CA private key ./myCA/private/cakey.pem
    3464:error:02001003:system library:fopen:No such process:.cryptobiobss_file.c:398:fopen(‘./myCA/private/cakey.pem’,’rb’)
    3464:error:20074002:BIO routines:FILE_CTRL:system lib:.cryptobiobss_file.c:400:
    unable to load CA private key

    openssl.cnf のカスタマイズ:

         RANDFILE = $ENV::HOME/.rnd —> RANDFILE = $ENV::HOME.rnd
         #oid_file = $ENV::HOME/.oid —> #oid_file = $ENV::HOME.oid

         dir = ./demoCA —> dir = (drive xx):myCA   (絶対パスじゃないとダメみたい)
         certs = $dir/certs —> certs = $dircerts
         crl_dir = $dir/crl —> crl_dir = $dircrl
         database = $dir/index.txt —> database = $dirindex.txt

         new_certs_dir = $dir/newcerts —> new_certs_dir = $dirnewcerts

         certificate = $dir/cacert.pem —> certificate = $dircacert.pem
         serial = $dir/serial —> serial = $dirserial
         crlnumber = $dir/crlnumber —> crlnumber = $dircrlnumber

         crl = $dir/crl.pem —> crl = $dircrl.pem
         private_key = $dir/private/cakey.pem —> private_key = $dirprivatecakey.pem
         RANDFILE = $dir/private/.rand —> RANDFILE = $dirprivate.rand

    もし, TSA (Time Stamping Authority) を使うなら,同じように [ tsa_config1 ] のとこをカスタマイズ。

    RSA private key のデフォルトとして, 2048 ビットを使うので,
         default_bits = 1024 —> default_bits = 2048

    ところで, (drive x):(Apache bin dir) へのパスを通していない。このためにしか使わないので,サーバ上で余計なパスを追加したくないからだが,この辺は私の流儀なので,各自の流儀でやってください。

  3. cmd.exe を起動する。
         >cd (drive xx):myCA
         >copy index.txt+   (UNIX touch コマンドの代わりに使う)
         >echo 01 > serial   (01 が書き込まれた serial ファイルがいるので)
         >(drive x):(Apache bin dir)openssl req -new -keyout privatecakey.pem -out careq.pem -config (drive x):(Apache conf dir)openssl.cnf

         Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (cakey.pem 用の pass phrase)
         Verifying – Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (cakey.pem 用の pass phrase)

         Country Name:JP   (今回作るすべてのキーで同一)
         State or Province Name:FUKUOKA   (今回作るすべてのキーで同一)
         Locality Name:FUKUOKA   (今回作るすべてのキーで同一)
         Organization Name:o6asan’s Web Site
         Organizational Unit Name:myCA
         Common Name:o6asan.com   (ここは省略不可)
         Email Address:私のメールアドレス

         A challenge password: 省略
         An optional company name: 省略

  4. CA extensions を使って, certificate request の自己署名:
         >(drive x):(Apache bin dir)openssl ca -config (drive x):(Apache conf dir)openssl.cnf -selfsign -in careq.pem -extensions v3_ca -out cacert.pem

         Enter pass phrase for (drive xx):myCAprivatecakey.pem: xxxxxxxxxxxxxxxx   (cakey.pem 用の pass phrase)

         Sign the certificate? [y/n]: y
         1 out of 1 certificate requests certified, commit? [y/n] y

         >copy cacert.pem (drive x):(Apache conf dir)   (サーバ用の cacert.pem)
         >copy cacert.pem my_ca.crt   (クライアント用の my_ca.crt)

 server.key と server.crt を作る。

  1.      >(drive x):(Apache bin dir)openssl req -new -keyout server.key -out server.csr -config (drive x):(Apache conf dir)openssl.cnf

         Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (server.key 用の pass phrase)
         Verifying – Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (server.key 用の pass phrase)

         Country Name:JP   (今回作るすべてのキーで同一)
         State or Province Name:FUKUOKA   (今回作るすべてのキーで同一)
         Locality Name:FUKUOKA   (今回作るすべてのキーで同一)
         Organization Name:o6asan’s Web Site
         Organizational Unit Name:WordPress
         Common Name:o6asan.com   (ここは省略不可)
         Email Address:私のメールアドレス

         A challenge password: 省略
         An optional company name: 省略

  2. certificate request の署名:
         >(drive x):(Apache bin dir)openssl ca -in server.csr -out server.crt -config (drive x):(Apache conf dir)openssl.cnf

         Enter pass phrase for (drive xx):myCAprivatecakey.pem: xxxxxxxxxxxxxxxx   (cakey.pem 用の pass phrase)

         Sign the certificate? [y/n]: y
         1 out of 1 certificate requests certified, commit? [y/n] y

         >copy server.crt (drive x):(Apache conf dir)

  3. Win32 は SSLPassPhraseDialog builtin をサポートしていないので, server.key の pass phrase を復号しておかないと, Apache の起動時にエラーが出る。 getting rid of an error at Apache startup time (PDF 版)を参考にして, server.key を作り直す。

         >copy server.key cp_server.key
         >(drive x):(Apache bin dir)openssl rsa <cp_server.key> (drive x):(Apache conf dir)server.key

         Enter pass phrase: xxxxxxxxxxxxxxxx   (server.key 用の pass phrase)

 最後に clientcert.p12 を作る。これは,クライアント認証用である。

  1.      >(drive x):(Apache bin dir)openssl req -new -keyout client.key -out client.csr -config (drive x):(Apache conf dir)openssl.cnf

         Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (client.key 用の pass phrase)
         Verifying – Enter PEM pass phrase: xxxxxxxxxxxxxxxx   (client.key 用の pass phrase)

         Country Name:JP   (今回作るすべてのキーで同一)
         State or Province Name:FUKUOKA   (今回作るすべてのキーで同一)
         Locality Name:FUKUOKA   (今回作るすべてのキーで同一)
         Organization Name:o6asan’s Web Site
         Organizational Unit Name:Administration
         Common Name:o6asan   (ここは省略不可)
         Email Address:私のメールアドレス

         A challenge password: 省略
         An optional company name: 省略

  2.      >(drive x):(Apache bin dir)openssl ca -in client.csr -out client.crt -config (drive x):(Apache conf dir)openssl.cnf

         Enter pass phrase for (drive xx):myCAprivatecakey.pem: xxxxxxxxxxxxxxxx   (cakey.pem 用の pass phrase)

         Sign the certificate? [y/n]: y
         1 out of 1 certificate requests certified, commit? [y/n] y

  3. クライアント用に pkcs12 フォーマットのファイルを作る。
         >(drive x):(Apache bin dir)openssl pkcs12 -export -in client.crt -inkey client.key -out clientcert.p12

         Enter pass phrase for client.key: xxxxxxxxxxxxxxxx   (client.key 用の pass phrase)
         Enter Export Password: xxxxxxxxxxxxxxxx   (クライアント PC 用のパスワード)
         Verifying – Enter Export Password: xxxxxxxxxxxxxxxx   (クライアント PC 用のパスワード)

    cmd.exe を閉じる。

 これで, Apache conf ディレクトリに cacert.pem, server.crt, server.key ができ,リムーバルメディア上の myCA 内には, my_ca.crt と clientcert.p12 がある。この5つがあれば,クライアント認証も使える。

 カレントの httpd.conf の以下の行をアンコメントする。

  • LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  • LoadModule ssl_module modules/mod_ssl.so
  • Include conf/extra/httpd-ssl.conf

 Apache extra conf ディレクトリにある httpd-ssl.conf をカスタマイズする。
     Listen 443 —> Listen xxxxx   (443のままでも構わない)

     <VirtualHost _default_:443> —> <VirtualHost _default_:xxxxx>
     DocumentRoot “c:/Apache24/htdocs” —> DocumentRoot “自鯖のドキュメントルート”
     ServerName www.example.com:443 —> ServerName o6asan.com:xxxxx
     ServerAdmin admin@example.com —> ServerAdmin 私のメールアドレス
     ErrorLog “c:/Apache24/logs/error.log”
     —> ErrorLog “|bin/rotatelogs.exe -l -f logs/error.%Y.%m.%d 86400″ (自鯖のフォーマットで)
     TransferLog “c:/Apache24/logs/access.log”
     —> TransferLog “|bin/rotatelogs.exe -l -f logs/access.%Y.%m.%d 86400″ (自鯖のフォーマットで)

     #SSLCACertificateFile “c:/Apache24/conf/ssl.crt/ca-bundle.crt”
     —> SSLCACertificateFile “C:/Apache24/conf/cacert.pem”

     #SSLVerifyClient require —> SSLVerifyClient require
     #SSLVerifyDepth 10 —> SSLVerifyDepth 10 SSLVerifyDepth 1

     <Directory “c:/Apache24/cgi-bin”> —> <Directory “自鯖の cgi-bin ディレクトリ”>

 Apache を再起動。
 my_ca.crt と clientcert.p12 を WiFi 端末 のブラウザにインポート。

 あとは, WordPress のセッティングだが,こっちの方がやったことないので,大変そうだ。

追記(6/19):
 この後, SSL で WordPress にログインしようとしたら,即座に「複数サイト機能はポート番号を含まない URL のみで動作します」というメッセージが戻ってきた。仕方がないので, xxxxx にしていたポートをデフォルトに戻した。(^^;)

カテゴリー
Windows

本家のお世話-#61。(Apache 2.4.4へアップデート)

 Lounge 版の Apache 2.4.4 (魚拓です)が出たので,アップデート。単なるバグフィックスのみならず, CVE-2012-3499 および CVE-2012-4558 へのパッチが施されているようなので。

 Lounge版のApache 2.4.4は,いつも通りVC9版を落とす。 httpd-2.4.4-win32-VC9.zip (23 Feb) の httpd.conf については,以下の2点が変わっていた。
————————————————————————————————————————————————
 ひとつは,説明文のところで,以下のようになったこと。
   # Options FileInfo AuthConfig Limit  —>>  # AllowOverride FileInfo AuthConfig Limit

 もうひとつは,DNT(Do Not Track)のところが,以下のように,すべてコメントアウトされたこと。これで,この件は終わりかな???
   # uncomment out the below to deal with user agents that deliberately
   # violate open standards by misusing DNT (DNT *must* be a specific
   # end-user choice)
   #
   #
   #BrowserMatch “MSIE 10.0;” bad_DNT
   #

   #
   #RequestHeader unset DNT env=bad_DNT
   #

————————————————————————————————————————————————

 新規導入の方は,「本家のお世話-#28。」を,参考にしてください。

カテゴリー
WordPress

今更ながらのアクセス制限。

投稿アップデート情報  追記(2/22)  追記2(4/16)

 ほんと,今更ながらなんですが, wp-login.php にアクセス制限をかけました。なんのためかというと, AWStats の統計から外すためです。

 この件については,ずっと,ほったらかしだったんです。というのが,不正アクセスされてるみたいだなという程度で,数もそれほどでなく,特に問題はないようだったもんで。それに,WordPressのフォーラムを見ても,常に最新版を使うようにし,強いパスワードを使っていれば,うちのようなサーバの使い方(使用者は,私だけ)であれば,そこまでする必要もないだろうと感じていたものですから。
 そんなわけで,ときどきパスワードを変えたりでお茶を濁していたのですが,年末から, wp-login.php への不正アクセスがドッと増えちゃって。どうも,英語版の「ブログに雪が降る。」を書いてからのような気がします。先年,大震災についての記事を英語版で書いたときも,ドッとスパムが増えたような覚えがありますが,英語版でタイムリーなトピックを取り上げたときは,そういうほうでも反応が早いみたいで,いい迷惑です……

 なにしろ,ログイン画面が表示された時点で,HTTPステータスコード 200 が戻るもんで,これのアクセス数がすべて AWStats の統計に入ってきちゃって,参った参ったというところです。で,このさい, access-denied.conf という extra-conf を作り apache に読み込ませることにしました。
 ついでに,主な迷惑サイト(主として,*.163data.com.cn―苦笑)のアクセス制限もこっちに移しました。

 access-denied.conf の中身は,下記のようなものです。 G:/WEB というのは,ドキュメントルートです。ディレクティブは新しいほうの形で書いてみました(笑)。
 wp-login.php のアクセス制限をどんな形にしようかと思ったのですが,当面,自宅からだけ認める形にしました。さっき設定したばかりなんですが,error.log に,[authz_core:error] がすでに 10 個ばかり並んでますから,効果大ですねぇ。これで AWStats の統計から wp-login.php への不正アクセスが外せます。やれやれ。

<Files “wp-login.php”>
Require ip xxx.xxx.xxx.xxx/xx  <<--- 自宅LANのIPアドレス </Files> <Directory "G:/WEB"> <RequireAll> Require all granted # [*.163data.com.cn] # [110.80.0.0 - 110.91.255.255] Require not ip 110.80.0.0/12 # [112.112.0.0 - 112.115.255.255] Require not ip 112.112.0.0/14 # [116.52.0.0 - 116.55.255.255] Require not ip 116.52.0.0/14 # [117.24.0.0 - 117.31.255.255] Require not ip 117.24.0.0/13 # [117.60.0.0 - 117.63.255.255] Require not ip 117.60.0.0/14 # [117.80.0.0 - 117.95.255.255] Require not ip 117.80.0.0/12 # [119.96.0.0 - 119.103.255.255] Require not ip 119.96.0.0/13 # [120.32.0.0 - 120.43.255.255] Require not ip 120.32.0.0/12 # [121.204.0.0 - 121.207.255.255] Require not ip 121.204.0.0/14 # [121.224.0.0 - 121.239.255.255] Require not ip 121.224.0.0/12 # [121.32.0.0 - 121.35.255.255] Require not ip 121.32.0.0/14 # [123.184.0.0 - 123.187.255.255] Require not ip 123.184.0.0/14 # [123.52.0.0 - 123.55.255.255] Require not ip 123.52.0.0/14 # [124.72.0.0 - 124.72.255.255] Require not ip 124.72.0.0/16 # [124.76.0.0 - 124.79.255.255] Require not ip 124.76.0.0/14 # [125.112.0.0 - 125.112.127.255] Require not ip 125.112.0.0/17 # [125.77.0.0 - 125.78.255.255] Require not ip 125.77.0.0/14 # [125.88.0.0 - 125.95.255.255] Require not ip 125.88.0.0/13 # [218.78.0.0 - 218.83.255.255] Require not ip 218.78.0.0/11 # [218.85.0.0 - 218.86.127.255] Require not ip 218.85.0.0/14 # [219.128.0.0 - 219.137.255.255] Require not ip 219.128.0.0/12 # [220.160.0.0 - 220.162.255.255] Require not ip 220.160.0.0/14 # [220.185.192.0 - 220.185.255.255] Require not ip 220.185.192.0/18 # [220.191.0.0 - 220.191.127.255] Require not ip 220.191.0.0/17 # [221.236.0.0 - 221.237.255.255] Require not ip 221.236.0.0/15 # [222.170.0.0 - 222.172.127.255] Require not ip 222.170.0.0/13 # [222.208.0.0 - 222.215.255.255] Require not ip 222.208.0.0/13 # [222.76.0.0 - 222.79.255.255] Require not ip 222.76.0.0/14 # [27.148.0.0 - 27.151.255.255] Require not ip 27.148.0.0/14 # [58.37.0.0 - 58.37.255.255] Require not ip 58.37.0.0/16 # [58.48.0.0 - 58.55.255.255] Require not ip 58.48.0.0/13 # [58.60.0.0 - 58.63.255.255] Require not ip 58.60.0.0/14 # [59.32.0.0 - 59.42.255.255] Require not ip 59.32.0.0/12 # [59.52.0.0 - 59.61.255.255] Require not ip 59.52.0.0/12 # [60.176.0.0 - 60.176.255.255] Require not ip 60.176.0.0/16 # [60.188.128.0 - 60.188.255.255] Require not ip 60.188.128.0/17 # [61.140.0.0 - 61.146.255.255] Require not ip 61.140.0.0/11 # [61.154.0.0 - 61.154.255.255] Require not ip 61.154.0.0/16 # [61.169.0.0 - 61.173.255.255] Require not ip 61.169.0.0/13 </RequireAll> </Directory> 追記(2/22):  題名のせいか,wp-login.phpのせいか,WordPressのセキュリティ強化の記事として読みに来る方が結構いらっしゃるようなので,現時点で参考になりそうなサイトを3つあげておきます。まあ,セキュリティ関係はナマモノなので,あくまで現時点の話です。上げられてる10個のうちの半分は,WordPressに限る話ではないですよね。up-to-dateとか,パスワード強度とか,ユーザの啓蒙とか。最後のものなんて一番苦労するとこじゃないですか。  記事は番号順にお読みください。

  1. WordPress のセキュリティ、こんな記事は要注意
  2. WordPress使いならこれだけはやっておきたい本当のセキュリティ対策10項目
  3. Re: WordPress使いならこれだけはやっておきたい本当のセキュリティ対策10項目

追記2(4/16):
 以下のようなニュースがあった。対策していない場合は,やった方がいい。なにしろ,うちのような零細ブログでも,wp-login.phpへの不正アタック数は,1日平均
     2012/11 — 99   2012/12 — 370   2013/01 — 290
     2013/02 — 320   2013/03 — 117   2013/04 — 377 15日終了時点
なんて感じだから,何も対策ができていない場合は,結構,破られる可能性はあると思うよ。しかし,本当に,12月にブログに雪が降るの話を書くまでは,アタック数少なかった気がするんだけどなあ。

  1. 全世界のWordPressサイトに大規模攻撃; デフォルトのアドミンユーザ名’admin’がねらわれている
  2. Brute Force Attacks Build WordPress Botnet
  3. WordPressを狙った大規模な攻撃

 とりあえず, 管理者ユーザ名を「admin」から他の何かに変更するとか,強いパスワードを使うとかいう対策が推奨されているようだが,先日の「2013年4月マイクロソフト定例。」あたりにも出てきた話だけど,パスワードの使いまわしとかはやめた方がいい。

カテゴリー
Windows

覚え書-#12。

 「本家のお世話-#20。」のところで,phpMyAdminのconfファイルを作り,Apacheのconf/extraに追加して使う話を書いた。これが出来るんなら,ほかのことも可能なはずとふと思った。実際,awstatsについては,もともともconfの雛形がzipに入っていて,同じようなことをしている。
 で,頭の中にあったのはなんについてかというと,PHPについてなのだ。ちょっと,設定ファイルを読んでみたが,特に問題はなさそう。というわけで,php54.confという名前で作ってみた。

 「本家のお世話-#28。」を見てもらえばわかるが,バラバラにソフトをインストールして,WAMP系サーバを建てるに当たって,オリジナルのhttpd.confにいろいろ付け加えたりしているのは,PHPだけなのだ。他のは,付け加えではなくアンコメントしたり,デフォを書き直したりしているに過ぎない。だから,これをextra-confにしてしまえば,分かりやすく,管理しやすくなるだろってこと。

 php54.confに書いたのは,以下の3行。
     LoadModule php5_module “C:/PHP/php5apache2_4.dll”
     AddHandler application/x-httpd-php .php
     PHPIniDir “C:/PHP”

 もちろん,httpd.confの
     LoadModule php5_module “c:/php/php5apache2_4.dll”

     <IfModule mod_php5.c>
       AddHandler application/x-httpd-php .php
       PHPIniDir “C:/PHP”
     </IfModule>
については,コメントアウトし,Supplemental configurationの区画の末尾に以下の2行を付け加える。
     # PHP settings
     Include conf/extra/php54.conf

 ApacheをRestartする。うまくいった。ちゃんと使える。

カテゴリー
Linux

CentOS6の練習-#10(Apacheのrpmを作る)。

 httpd-2.4.3.tar.bz2をダウンロードして,展開して中を見てみたら,httpd.specがあった。しかも,Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)というページもある。となれば,やはりrpmを作ってみるのが,CentOSを使い,ディストリのパッケージを使わないものの態度としては,正しい行ないだろう。ということで,Apache2.4.3のrpm作りに挑戦!! (爆)

 長いです。いざ,覚悟!!!

 それに取り掛かる前に,「鍵を信用する作業」や「鍵の信用を取り消す作業」の練習も含めて,この間やったシグネチャの確認をApacheでやってみる。

  1. ソースをダウンロードする。
       $ wget http://ftp.tsukuba.wide.ad.jp/software/apache/httpd/httpd-2.4.3.tar.bz2
    シグネチャをダウンロードする。
       $ wget http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2.asc
  2. 以下のコマンドで,シグネチャの確認。正しい署名と確認された。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  3. 現在よからぬ話は聞いていないので,一応,www.apache.orgの鍵を信用する作業をやってみる。
       $ gpg –edit-key RSA鍵ID
         ————————————————————————————————————————
         コマンド> trust  <<— trustを入力
         あなたの決定は? 5  <<— 一応5にしておく
         本当にこの鍵を絶対的に信用しますか? (y/N) y  <<— 一応yにしておく
         コマンド> q  <<— qを打って,gpg –edit-keyを抜ける。
         ————————————————————————————————————————
  4. もう一度,シグネチャの確認をしてみる。先ほどのメッセージの最後の3行は表示されなくなった。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  5. 公開鍵の信用を取り消してみる。
       $ gpg –delete-key RSA鍵ID
    更にも一度,シグネチャの確認をしてみると,メッセージは元に戻っている。

    まっ,こんなとこだね。これで,備忘録の役目は果たせるから,今後,この件は書かない。

 さて,rpmを作るにはrpm-buildがいるので,何はともあれ,これをインストールする。
   $ sudo yum install rpm-build

 では,Apacheのrpmのビルドに入る。

  1.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    をやったら,早速以下のメッセージが出た。「-devel」パッケージについては,ビルドのときだけしかいらないから,あとはアンインストールしていいと,上記のApache.orgのページに書いてあるのだが,結構な数に上るなあ。サーバ機と開発機は分けておくべきなんだろうか。今のところは,練習なので問題ないがその辺,セキュリティ面ではどうなのだろう。

    エラー: ビルド依存性の失敗:
         autoconf は httpd-2.4.3-1.i386 に必要とされています
         zlib-devel は httpd-2.4.3-1.i386 に必要とされています
         libselinux-devel は httpd-2.4.3-1.i386 に必要とされています
         apr-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         apr-util-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
         pcre-devel >= 5.0 は httpd-2.4.3-1.i386 に必要とされています
         openldap-devel は httpd-2.4.3-1.i386 に必要とされています
         lua-devel は httpd-2.4.3-1.i386 に必要とされています
         libxml2-devel は httpd-2.4.3-1.i386 に必要とされています
         distcache-devel は httpd-2.4.3-1.i386 に必要とされています
         openssl-devel は httpd-2.4.3-1.i386 に必要とされています

    地道に,インストール。
       $ sudo yum install autoconf
       $ sudo yum install zlib-devel
       $ sudo yum install libselinux-devel
    ここで,問題発生。
       $ sudo yum install apr-devel
    ディストリのパッケージが1.3.9-5になっている。BuildRequiresでは,上記の通り1.4.0以上だからまずい。

  2. Apacheから,tarballを落としてくる。シグネチャもちゃんと確認すること。
       $ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.4.6.tar.gz
  3. 落としてきたのはgz方式だが,rpmbuildではアーカイブとして扱ってくれないようなので,一度展開し,
       $ tar zxvf apr-1.4.6.tar.gz
    bzip2形式に圧縮し直す。
       $ tar cf – apr-1.4.6/ | bzip2 -c > apr-1.4.6.tar.bz2
  4.    $ rpmbuild -tb apr-1.4.6.tar.bz2

    エラー: ビルド依存性の失敗:
         libtool は apr-1.4.6-1.i386 に必要とされています
         doxygen は apr-1.4.6-1.i386 に必要とされています

    なんだってさ。「どこまで続く泥濘ぞ」ダネ。
       $ sudo yum install libtool
       $ sudo yum install doxygen

  5. 改めて,
       $ rpmbuild -tb apr-1.4.6.tar.bz2
    今度は通った。表示されたメッセージにより調べてみると,/home/centos/rpmbuild/RPMS/i386/に
         apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    ができている。cd コマンドでrpmのできたところに移動。
       $ cd /home/centos/rpmbuild/RPMS/i386/
    これをインストールする。
       $ sudo rpm -Uvh apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
    終了後, cd でホームディレクトリに戻っておく。

    apr-develのインストにaprが必要だから,両方ともインストールしないとだめ。それにしても,Minimalインストールで,何も入っていないせいだろうけど,開発環境を整えるのが大変だ。devel用のコレクションか何かを入れたほうが早いかもしれないが,いらないものは入れないスタンスだから,ちょっと我慢してやらないとね。

  6. 同様に,
       $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.4.1.tar.gz
       $ tar zxvf apr-util-1.4.1.tar.gz
       $ tar cf – apr-util-1.4.1/ | bzip2 -c > apr-util-1.4.1.tar.bz2
  7.    $ rpmbuild -tb apr-util-1.4.1.tar.bz2

    エラー: ビルド依存性の失敗:
         expat-devel は apr-util-1.4.1-1.i386 に必要とされています
         libuuid-devel は apr-util-1.4.1-1.i386 に必要とされています
         db4-devel は apr-util-1.4.1-1.i386 に必要とされています
         postgresql-devel は apr-util-1.4.1-1.i386 に必要とされています
         mysql-devel は apr-util-1.4.1-1.i386 に必要とされています
         sqlite-devel >= 3.0.0 は apr-util-1.4.1-1.i386 に必要とされています
         freetds-devel は apr-util-1.4.1-1.i386 に必要とされています
         unixODBC-devel は apr-util-1.4.1-1.i386 に必要とされています
         openldap-devel は apr-util-1.4.1-1.i386 に必要とされています
         openssl-devel は apr-util-1.4.1-1.i386 に必要とされています
         nss-devel は apr-util-1.4.1-1.i386 に必要とされています

    これまたすごい数だ。真面目な話,postgresql-develやsqlite-develなんかは,全然使わないと思うんだが,この辺も分かってきたら,SPECを弄れるようになりたいな。

  8. また,地道にインストール。
       $ sudo yum install expat-devel
       $ sudo yum install libuuid-devel
       $ sudo yum install db4-devel
       $ sudo yum install postgresql-devel
       $ sudo yum install mysql-devel  依存関係で,openssl-develもここで,インストールされる。
       $ sudo yum install sqlite-devel
       $ sudo yum install freetds-devel
       $ sudo yum install unixODBC-devel
       $ sudo yum install openldap-devel
       $ sudo yum install nss-devel
  9. 改めて,
       $ rpmbuild -tb apr-util-1.4.1.tar.bz2
  10. cd コマンドで,
    /home/centos/rpmbuild/RPMS/i386/ に移動して,
       $ sudo rpm -Uvh apr-util*
    終了後, cd でホームディレクトリに戻っておく。
  11. Apacheの依存パッケージの続きのインストール。
       $ sudo yum install pcre-devel
       $ sudo yum install lua-devel
       $ sudo yum install libxml2-devel
    openssl-develはさっき入れたから,あとはdistcacheだけ。

  12. ところが,これがCentOS6.3のパッケージになかった。tarballを見に行ったが,展開してみても,SPECが入っていなくて手におえない。結局,Fedora17のsrc.rpmを拾ってきた。URLの枝番は18になってるね。なんでだろう。
       $ wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/d/distcache-1.4.5-23.src.rpm
    これをリビルド。
       $ rpmbuild –rebuild distcache-1.4.5-23.src.rpm
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -Uvh distcache*
    ホーム・ディレクトリに戻る。
  13.    $ rpmbuild -tb httpd-2.4.3.tar.bz2
    やっと,Apache2.4.3のrpmができたのでインストール。
       $ cd /home/centos/rpmbuild/RPMS/i386/
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

    やれやれと思ったら,
         /etc/mime.types は httpd-2.4.3-1.i386 に必要とされています
    が出たので,
       $ sudo yum provides /etc/mime.types
    と調べてみると,どうやらmailcapというパッケージを入れればいいらしい。
       $ sudo yum install mailcap
    改めて,
       $ sudo rpm -U httpd-2.4.3-1.i386.rpm

 httpd-2.4.3-1のインストール完了。一応,「It works!」表示までいかないと終わられません(爆)。

  1. Apacheのテストのために,80番ポートを開ける。
       $ sudo /sbin/iptables -I INPUT 5 -p tcp –dport http -j ACCEPT #HTTP
       $ sudo /sbin/iptables -L –line-number   変更の確認
       $ sudo /sbin/service iptables save
  2. BINDを入れていないので,名前解決のために,/etc/hostsにローカルのサーバ名と,IPアドレスを追加。
  3.    $ sudo vi /etc/httpd/conf/httpd.conf
    のServerNameをローカルなものに書き換え。
       $ sudo service httpd restart
    実は,ここで少しはまった。restartをrootでやらないとSocketエラーが出る。
  4. 自鯖Lan内のWin端末のブラウザから,ローカルのサーバ名で,アクセス。
    「It works!」が無事表示された。

 本日は,ここまで。