[4127] パスワードマネージャー 投稿者:バザラ 投稿日:11/15-18:07 <URL>
XP+Apach2で自宅サーバー運営中です。
パスワードマネージャーをダウンロードさせていただいて、使おうとしていますが、作成されたパスワードファイルの読み出しが不可能のようです。
過去ログに crypt暗号の関係でWindowsではここままでは使えないようなことを読みました。
対応策があるのでしょうか?
宜しくお願いいたします。

[4136] Re: パスワードマネージャー 投稿者:てけてん 投稿日:11/16-15:16
> XP+Apach2で自宅サーバー運営中です。
> パスワードマネージャーをダウンロードさせていただいて、使おうとしていますが、作成されたパスワードファイルの読み出しが不可能のようです。
> 過去ログに crypt暗号の関係でWindowsではここままでは使えないようなことを読みました。
> 対応策があるのでしょうか?

まずは、設置アドレスをお書きください。

[4176] Re^2: パスワードマネージャー 投稿者:バザラ 投稿日:11/18-09:30
> > XP+Apach2で自宅サーバー運営中です。
> > パスワードマネージャーをダウンロードさせていただいて、使おうとしていますが、作成されたパスワードファイルの読み出しが不可能のようです。
> > 過去ログに crypt暗号の関係でWindowsではここままでは使えないようなことを読みました。
> > 対応策があるのでしょうか?
>
> まずは、設置アドレスをお書きください。

メンバー専用のページを運営しています。現在ベーシック認証を利用して、.htpasswdと.htaccessで上手く動いていますが、メンバーが増えるに従ってパスワードの管理が大変になるので、利用させていただきたいとおもい、設置テストを行っています。
?mode=ckeckやパスの登録・修正など全てO.K.ですが、出来上がったパスワードファイルへのパスを.htaccess記入して、メンバーディレクトリーへ置いてもXP+Apach2ではパスワードファイルへ書き込まれた暗号を読み出せないように感じられ、有効に働きません。
なお、テキストエディターでパスワードファイルを開いてみると、パスワードマネージャーで作成したものと、Apachで作成したものとは少し、形式が違っていると見受けられます。

なお、上手く働きませんので、リンクを付けておりませんし、メンバーディレクトリーにあるので、アドレスを記入してもアクセスできませんので、表記は失礼させて頂きました。

[4188] Re^3: パスワードマネージャー 投稿者:てけてん 投稿日:11/18-17:37
> なお、テキストエディターでパスワードファイルを開いてみると、パスワードマネージャーで作成したものと、Apachで作成したものとは少し、形式が違っていると見受けられます。

そうです。
以下、WindowsでApacheを使った時の話を書きます。
私も、今回、ちょっと調べただけなので、間違った解釈をしている可能性がありますので、詳しくは検索などして調べてみて下さい。

WindowsのApacheのhtpasswd.exeで暗号化したパスワードは、「Apache MD5アルゴリズム」で暗号化されます。
参考アドレス
http://dolphin.c.u-tokyo.ac.jp/manual-ja/programs/htpasswd.html

BASIC認証を使う際にも、この形式のパスワードを使います。
暗号化されたパスワードを見ると、

$apr1$U0l1qaHN$TgOQeLqModzx.uRob7UVs1
とか
$apr1$yY1.....$pL.OmU7zZ4gCLzeWBhhKf0

このような感じになっているかと思います。

Perlのcrypt関数も、システムによって、DES方式とMD5方式とあるそうです。
参考アドレス
http://www.rescue.ne.jp/cgi/md5/
http://www.ss.iij4u.or.jp/~somali/web/_perl_crypt2.html

大抵は、DES方式になっているそうです。私の環境でも、そのようになっています。
バザラさんの環境でも、そうなっているわけですね。
ただ、Perlのcrypt関数のMD5方式は、「Apache MD5アルゴリズム」とは、微妙に違う形式となっています。

$1$1e6YpNn1$SWKplH/DEd5qIHs.ZXUXQ1

と、始めに「$1$」が必ず付く形式です。(因みに、両方とも「1234」を暗号化したものです。下で紹介するモジュールを使用)
これは、unix系OS以外でもそうかは、その環境がないのでよく判りませんが。
「$1$」が付く方だと、BASIC認証で試しても、パスワードがあっているのにログインすることが出来ません。
始めに「$apr1$」が付く方だと、認証できます。

さて、ではどのようにしたら良いかというと、Perlで暗号化する時にも、「Apache MD5アルゴリズム」で暗号化すれば良いことになります。
それには、Crypt::PasswdMD5モジュールを使います。
標準モジュールではないので、PPMにてインストールしてください。
パスワードの照合の際も、このモジュールを使用します。
このモジュールが使えれば、改造方法は、とても簡単です。

init.cgiファイルをテキストエディタで開いて、「crypt暗号」「crypt照合」の部分を探します。

sub encrypt {
local($in) = @_;
local($salt, $enc, @s);

@s = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
srand;
$salt = $s[int(rand(@s))] . $s[int(rand(@s))];
$enc = crypt($in, $salt) || crypt ($in, '$1$' . $salt);
$enc;
}



sub encrypt {
local($in) = @_;
$enc = apache_md5_crypt($in);
$enc;
}

に、

sub decrypt {
local($in, $dec) = @_;

local($salt) = $dec =~ /^\$1\$(.*)\$/ && $1 || substr($dec, 0, 2);
if (crypt($in, $salt) eq $dec || crypt($in, '$1$' . $salt) eq $dec) {
return (1);
} else {
return (0);
}
}



sub decrypt {
local($in, $dec) = @_;
return (apache_md5_crypt($in,$dec) eq $dec ? 1 : 0);
}

に変更し、基本設定の部分で

use Crypt::PasswdMD5;

を追加するだけです。
以上で、使えるようになると思います。

# 因みに、Crypt::PasswdMD5で暗号化するには、
# $cryptedpassword = unix_md5_crypt($password, $salt);
# $apachepassword = apache_md5_crypt($password, $salt);
# のように2種類の関数が用意されています。
# 上が、「$1$」が必ず付く形式で、下が「Apache MD5アルゴリズム」です。
# このモジュールを使用しなくても、htpasswdコマンドを使えば暗号化できますが、その場合のパスワードの照合方法が分かりません。

あと、PasswordManagerは、ユーザーが自由に登録することが出来、その際は、メールでパスワードを知らせることになります。
このメール送信部の改造については、ご自分で調べて対応して下さい。
私は、これについて詳しくないのと、どの送信プログラムを利用しているのかがわからない為です。


ただ、もしも管理者のみがIDとパスワードを追加し、全てを管理するのなら(ユーザーにパスワードの変更もさせない)、
http://confetto.s31.xrea.com/
こちらの「.htpasswdファイル編集スクリプト」を利用するのも良いかと思います。
htpasswdコマンドを使い、暗号化処理が出来ますので、モジュールをインストールしなくても利用することが出来ます。

[4224] Re^4: パスワードマネージャー 投稿者:バザラ 投稿日:11/20-21:03
ご丁寧な説明を有難うございました。
私にとっては少し難しい解決法ですが、勉強のためにもトライして見ます。

なお、xreaのものも試してみます。

上手く行きましたら又報告します。

[4299] Re^5: パスワードマネージャー 投稿者:バザラ 投稿日:11/23-20:18
てけてけさんの指摘どうりにやってみましたら、大成功です(^^♪。
ppmインストールで少し迷いましたが何とか上手く行きました。
Apacheのhtpaswd.exeで作成したパスワードとは少し形式が違うようですが、windowsでも有効に働きます。
ただし、従来のパスに追加でも.htaccessは有効ですが、管理画面では新規作成したものしか読み出せないので、旧パスワードは作りかえる必要がありました。
いずれにしても上手く行きましたので御礼申し上げます。
よくもここまで判るものと感心します。有難うございました。

[検索ページ] [掲示板]