PHPki で簡単証明書運用 (1) 【PHPki の修正と導入 (修正版)】

PHPki

先日「PHPki で簡単証明書運用 (1)」を書いたのですが、これで取得したバージョンだと色々不具合があることがわかりました.導入方法含めて修正した方が良いと思ったので,別記事として修正版を書きなおします…

証明書を管理するのって大変ですよね.openssl のコマンドってよく使うコマンド群ではないので覚えづらいのと,作った物の管理もしづらかったり.
そんな怠惰な人にぴったりなのが「PHPki (PHPki Digital Certificate Authority)」です.PHPki は PHP で作成されている OpenSSL の Web フロントエンドです.
リンクしている大本のサイトにライブデモがありますので,どんなもんかちらっと見て頂ければと.
今回は,PHPki の導入と使い方を纏めたいと思います.利用開始までの手順がちょっと面倒なので備忘録を兼ねて…

ダウンロードとインストール

PHPki は Sourceforge で配布されています.「http://sourceforge.net/projects/phpki/」にアクセスしてダウンロードすることが可能です.最新版は 2014/01/30 現在 phpki-0.83.tar.gz なのですが,これが結構不具合があることがわかりました

したがって,Sourceforge からのダウンロードではなく GitHub 「https://github.com/radicand/phpki」から最新のコードを取得することをお薦めします.
GitHub の画面右側に「Download ZIP」がありますので,これをクリックする事で最新のソースを zip 化してダウンロードすることが可能です.ファイル名は master.zip になります.

取得したら Web サーバ上で展開します.Seichan の環境だと Ports で導入した Apache が動いていて,こういった物は /usr/local/www 以下において httpd.confAlias を設定する感じですので,例はそのような形で書きます.
RHEL 系の Linux だと /var/www とかだったと思いますが,そのあたり配置は自由です.

# cd /usr/local/www
# unzip /home/seichan/master.zip
Archive:  /home/seichan/master.zip
d phpki-master
 extracting: phpki-master/.htaccess
 extracting: phpki-master/CHANGELOG
 extracting: phpki-master/LICENSE.TXT
 extracting: phpki-master/Makefile
 extracting: phpki-master/README.md
 extracting: phpki-master/TODO
 extracting: phpki-master/about.php

Seichan の環境の場合は,先に書いたとおり Apache の Alais 設定ファイルとして /usr/local/etc/apache22/Includes 以下にファイルを作成します.
AllowOverride all は PHPki の Readme に記載されていますのでその通り追加しています.

Alias /phpki083 "/usr/local/www/phpki-master"
<Directory "/usr/local/www/phpki-master">
  Options none
  AllowOverride all
  Order Deny,Allow
  Allow from all
</Directory>

以上が完了したら,ブラウザでアクセスし,正常に表示されるところまで確認してください.
よくある PHP 関連のソフトウェアは,この後ブラウザでアクセスして設定.という形なのですが,残念ながらこのままアクセスしてもうまく動作しませんので,以下の作業を続けて行います.

Makefile を修正して make distclean を実行する

Linux の場合は修正の必要が無いかもしれません.次の2つの行 (32行目,34行目) の chown の個所を修正します.

修正前

find . ! -type d -follow -exec chown $(UID).$(GID) {} \;
find . -type d -follow -exec chown $(UID).$(GID) {} \;

修正後

find . ! -type d -follow -exec chown $(UID):$(GID) {} \;
find . -type d -follow -exec chown $(UID):$(GID) {} \;

修正が終わったら,make distclean を実行します.

# make distclean
find . -name .*.swp -follow -exec rm -f {} \;
find . -name test.php -exec rm -f {} \;
find . -name phpinfo.php -exec rm -f {} \;
find . -name "deleteme*" -exec rm -f {} \;
find . -name "newcert*.???" -exec rm -f {} \;

なぜ先に make distclean を行うのか.という理由ですが,zip を展開しただけの状態では .htaccess の構文が間違っている他,パーミッションの初期化をしてくれるからです.
これを実行しないと後々ハマることになるので必ず実施しましょう.

PHP ファイル群を修正する

phpki-0.83 と違ってそんなに数はないのですが,一部 PHP 開始タグが <?php ではなく <? と,short_open_tag が有効なことを想定した記述があります.
実行する環境で short_open_tag が有効であれば問題はありませんが,無効な環境の場合,各ファイルを書き換えるか short_open_tag を有効にしてあげてください.先に修正した .htaccess に次の一文を追加してあげれば short_open_tag の対応が完了となります.

php_flag short_open_tag on

ファイルを修正したい.という人は次のファイルを修正してください.

  • help.php の9行目から12行目
<a href=<?=BASE_URL?>help/PKI_basics.html><h3>PKI and E-mail Encryption- A Brief Explanation</h3></a>
<a href=<?=BASE_URL?>help/cacert_install_ie.html><h3>Installing Our Root Certificate For Use With Outlook and Outlook Express</h3></a>
<p><a href=<?=BASE_URL?>help/usercert_install_ie.html><h3>Installing Your Personal E-mail Certificate For Use With Outlook and Outlook Express</h3></a>
<p><a href=<?=BASE_URL?>help/glossary.html><h3>Glossary</h3></a>

<a href=<?php echo BASE_URL?>help/PKI_basics.html><h3>PKI and E-mail Encryption- A Brief Explanation</h3></a>
<a href=<?php echo BASE_URL?>help/cacert_install_ie.html><h3>Installing Our Root Certificate For Use With Outlook and Outlook Express</h3></a>
<p><a href=<?php echo BASE_URL?>help/usercert_install_ie.html><h3>Installing Your Personal E-mail Certificate For Use With Outlook and Outlook Express</h3></a>
<p><a href=<?php echo BASE_URL?>help/glossary.html><h3>Glossary</h3></a>
  • help.php の14行目
<?

<?php
  • about.php の13行目
Web application for managing a <a href=<?=BASE_URL?>help/glossary.html#PKI target=help/glossary>

Web application for managing a <a href=<?php echo BASE_URL?>help/glossary.html#PKI target=help/glossary>
  • ca/help.php の367行目
<?=$config[getting_help]?>

<?php echo $config[getting_help]?>
  • ca/help.php の371行目
<?

<?php
  • ca/request_cert.php の362行目,366行目
<td>Alternative DNS Names<br>(only one per Line)</td><td><textarea name=dns_names cols=30 rows=5><?= htvar($dns_names) ?></textarea></td>
<td>IP's<br>(only one per Line)</td><td><textarea name=ip_addr cols=30 rows=5><?= htvar($ip_addr) ?></textarea></td>

<td>Alternative DNS Names<br>(only one per Line)</td><td><textarea name=dns_names cols=30 rows=5><?php echo htvar($dns_names) ?></textarea></td>
<td>IP's<br>(only one per Line)</td><td><textarea name=ip_addr cols=30 rows=5><?php echo htvar($ip_addr) ?></textarea></td>

root ユーザで secure.sh を修正してから実行

展開したディレクトリ直下に secure.sh というファイルがあります.実行したいところではあるのですが,一番大事なところが間違っているので修正します.

  • secure.sh の65行目
user=${x:-apache}

owner=${x:-apache}

修正後,secure.sh を実行します.ただ,残念ながら(?) /bin/bash と先頭行に記載されています.ただ,/bin/bash ではなく /bin/sh でも動作しますので,bash が未導入の環境の場合は先頭行を /bin/sh に変更して実行してください

実行すると以下のような表示とともに,次の確認・入力項目が現れます.それぞれ環境に合わせて入力してください.

  • Enter the location of your PHPki password (i.e. /etc/phpkipasswd):

パスワードファイルをどこに作るか聞かれますので,パスを指定します.本環境の場合,Apache の DocumentRoot 以外に展開して Alias で設定をしていますので,展開したディレクトリ (/usr/local/www/phpki-0.83/phpkipasswd) の一つ上のディレクトリにパスワードファイルを作成しています.

  • Enter a user id:
  • New password:
  • Re-type new password:

管理者アカウント名を入力します.普段使いの管理者ユーザ名を指定してください.Seichan はとりあえず admin としています…
また,パスワードの入力も聞かれますので,2回入力してください.

  • See the README file for more information about the ‘pkiadmin’ user.
  • New password:
  • Re-type new password:

いまいち理由がわからないのですが,デフォルトで pkiadmin というユーザも作成されます.これのパスワードも設定してください.

  • Enter the user ID your web server runs as [apache]:
  • Enter the group ID your web server runs as [apache]:

Apache Web Server が動作するユーザID/グループID の指定が促されます.FreeBSD だと www というアカウントが Web Server 用アカウントですので www と指定していますが,これは環境に合わせてください.

  • Enter the IP or subnet address [192.168.0.0/16] which will be allowed access to the user admin module in under ./admin:

admin という URL/ディレクトリ以下へのアクセスを許可するネットワークを指定してください.admin 以下の URL にアクセスして証明書の作成等を行いますので,許可している所からのアクセスに留めることが必要です.

通しで実行した結果を以下に貼り付けます.

# ./secure.sh

This application is designed to be an easy to use "certificate factory"
requiring minimum human intervention to administer.  It is intended for
use within a trusted INTRAnet for the creation and management of x.509
e-mail digital certificates by departmental managers.  IT IS NOT INTENDED
FOR USE OVER THE INTERNET.

This application stores private keys within a sub-directory, making them
potentially susceptible to compromise.  Extra care has been taken in the
design of this application to protect the security of your certificates,
on the condition that you INSTALL IT AS THE ROOT USER.  However, no
software is 100% secure.

Enter the location of your PHPki password (i.e. /etc/phpkipasswd): /usr/local/www/phpki-0.83/phpkipasswd

The file you specified does not yet exist.
Let's create it and add your first user.
Enter a user id: admin
Creating the admin user account...
New password:
Re-type new password:
Adding password for user admin
Creating the administrator account...
See the README file for more information about the
'pkiadmin' user.
New password:
Re-type new password:
Adding password for user pkiadmin

Enter the user ID your web server runs as [apache]: www

Enter the group ID your web server runs as [apache]: www

Enter the IP or subnet address [192.168.0.0/16] which will be allowed access
to the user admin module in under ./admin: 192.168.0.0/16

Working...
Done.

ベタな設定はこれで完了で,以降は Web アクセスして実施可能となります.キリが良いところになったので,次回にまわします…

コメント

タイトルとURLをコピーしました