コマンドでランダムにパスワードを生成してベーシック認証の設定に加える

このエントリーをはてなブックマークに追加

サーバーの設定を自分で行うようになって、いろいろとコマンドを打つことが多くなったこの近年。

テスト用のサーバー設定を行う際に、いつもはコマンドでファイルを作成して、そのファイルに .heaccess の設定内容を自動で生成してくれるサービスで出したものをコピペしていました。

自動で生成でもよかったのですが、コマンドでも出来ないかなーとか調べてみたので、そのメモです。

ランダムパスワードの生成

ランダムパスワード生成には mkpasswd を使う必要がある。 CentOSにはデフォルトで入っていないようなのでインストールをしてから利用する。

yum で mkpasswd をインストール

$ yum install expect

これだけでインストール完了。

パスワードを生成してみる

下記リンクと、数年前に某案件で一緒だったIさんがしきりにいっていた man コマンドで $ man mkpasswd 叩いてオプションを確認

任意の文字数でパスワードをランダム生成するには - @IT

-l パスワードの長さ
-d パスワードに含める数字の数
-c パスワードに含める英字小文字の数
-C パスワードに含める英字大文字の数
-s パスワードに含める特殊文字の数

特殊文字がデフォルトで1つは入るようになっているようなので、不要な場合は -s 0 としたら入らないパスワードができるらしい

ということで作ってみた

10文字で特殊文字無しとした例

$ mkpasswd -l 10 -s 0

htpasswd で認証ファイルを作成

パスワードが用意できたら、ベーシック認証に使う認証用のファイルを作成する。

認証ファイルを作成するときのコマンドは htpasswd を使う。

Manual Page: htpasswd - Apache HTTP Server

尚、htpasswd のデフォルトで作成してしますうと、8文字以上の文字数が認証に利用されないらしい。

【apache】ベーシック認証で8文字以上の長いパスワードを設定するときの注意 at softelメモ

ということで、mオプションのMD5で作成するのが良さそう。

ファイル名を .htpasswd で作成する例

$ htpasswd -cbm .htpasswd name passward

あとはこの作成下ファイルを認証で通用に apache や nginx 側の設定をして完了。

サービスを使うのもいいのですが、これくらいで終わるなら自分でファイル作成するのでも同じくらいかなーと。

と、そんなメモでした。

掲載写真

Photographer
Zarko Drincic
License
Creative Commons (BY-ND)