*

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

公開日: : 最終更新日:2014/02/03 FreeBSD, PHP, PHPki

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

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

 SPONSORED LINK
 

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

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 アクセスして実施可能となります.キリが良いところになったので,次回にまわします…

SPONSORED LINK
  ☆ ブログランキング参加しました (*≧∀≦)ノシ
にほんブログ村 IT技術ブログ FreeBSDへ 

関連記事

no image

FreeBSD には関係ないが

CIFS は1アクション毎のやり取りが多すぎる.この為,リモートからのファイル送受信はとてつもなく時

記事を読む

no image

RAID

RAID Level が悩ましい Seichan です.風呂上り.さっぱり.乾燥して体かゆっ ATA

記事を読む

vmware_logo

VMware Server 上の FreeBSD の時刻がずれる

仕事中の Seichan です.忘れやすいので,メモメモ.隣の席の人から,「いつも見てるのに更新され

記事を読む

no image

Multiple vulnerabilities in OpenSSH

今度は OpenSSH に関する SA が出てますなぁ… make world 終わったばっかりなの

記事を読む

no image

もっともセキュアなOSはBSDだそうだ

ITmediaによると,もっともセキュアな OS はオープンソースプラットホームの BSD と Ma

記事を読む

no image

djbdns から bind へ移行

DMZ 構成にして,ネットワーク構成を色々変更して,何か良くわからないんですが, djbdns でう

記事を読む

no image

PostgreSQLが…

家のサーバは2台あって,それぞれが Flets ADSL に接続されています.この内1台マシンの R

記事を読む

ssl_icon

PHPki で簡単証明書運用 (4) 【作成した証明書を管理する】

Seichanです.こんばんわ. 先日の「PHPki で簡単証明書運用 (3) 【署名されたサーバ

記事を読む

FreeBSD

FreeBSD をクライアントとして利用する (サウンド)

Seichan です.FreeBSD をクライアントとして利用する為の覚え書き其ノ一.まずはやっぱり

記事を読む

FreeBSD

GEOM CONCAT を使う

Seichan です.こんばんわ. 前回の「GEOM RAID1 を管理する」で書いた通り今回

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Google Adsense

ssl_icon
PHPki で簡単証明書運用 (5) 【管理ユーザのメンテナンスとCRLの取得】

Seichanです.こんばんわ. いつものとおり,だいぶ日が経ってし

ssl_icon
PHPki で簡単証明書運用 (4) 【作成した証明書を管理する】

Seichanです.こんばんわ. 先日の「PHPki で簡単証明書運

ssl_icon
PHPki で簡単証明書運用 (3) 【署名されたサーバ証明書を作る】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

ssl_icon
PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】

Seichan です.こんばんわ. さて,先日の「PHPki で簡単

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

Seichan です.こんばんわ. 先日「PHPki で簡単証明書運

→もっと見る

PAGE TOP ↑